# pass #def print(self, *args, sep= , end='\n'', file=None): ''' 在python中除了内置函数,还可以自创函数,以及自己定义里面的方法>自定义函数 ''' #定义方法 ''' def 函数名(参数): 函数的功能 函数的使用(调用的方法) 函数名 ''' #判断字符串是不是手机号,如果有很多手机号要判断怎么办? ''' def isphone(): isphone() ''' # 我们可以对于函数的名字,查询它存在的意义 #函数名能够像变量的值 一样被 传递 #c= isphone() #问题测试-只有自己创建的函数可以用变量吗 a = print a('这是print函数功能的变量名a') #return: 函数的返回值 (关键字) #当函数定义时,里面使用return 在调用函数时进行打印,那第打印的内容就是返回之后的内容 def test1(): print('这是一个没有返回值的函数') test1() print(test1()) def test2(): return '这是有返回值的函数' print(test2()) #函数中有return的返回值时,则会打印出return后面的内容 def test3(): a = 1 b = 2 c = 4 return a + b print(test3()) # 函数调用 的内容 ,也可以赋值给一个变量或者直接用来执行其它操作 a = test2() print(a) # 函数调用的内容只能打印return后面的第一个内容 #函数的参数,用于计算两个数之间的和,并反结果打印出来 def funcition1(): s = 2 + 2 print(s) funcition1() def func2(): num1 = int(input('输入第一个数')) num2 = int(input('请输入第二个数')) print(num1 + num2) func2() #以下为函数中的有参函数(函数中有参数的就是有参函数,无参数的就是无参函数) #当定义了两个参数后,当定义了两个巡视后在调用 时也必须 使用两个参数 def func3(num1, num2): #函数中的参数 return num1 + num2 print(func3(2, 3)) # ctrl+p出提示 print(func3(3,19)) ''' #默认参数,运行函数之前我们就可以给参数一个默认值 #定义一个函数,于于结算小时工的工资,默认普通员工为13每小时,如果时薪不一样可以自己更改 并且要写出今天工作的自我评价以及给自己打分 再在后面录入一下自己昨天和今天的工作时长 ''' hour = int(input('请输入你的工作时长')) hourly_wage = int(input('请输入你的时薪')) def salary(hour, hourly_wage = 13): #默认参数 return hour * hourly_wage print(salary(hour,hourly_wage)) #不定长参数 *args **kwargs 如果使用多个参数可以使用 #可以接受多个参数,不用额外一一定义 def salary1(hour, hourly_wage, *args, **kwargs): print(args) #打印*args时不需要输入*。使用*args接受没有被定义的元素,是以元组的形式保存(args这一个不定长参数) print(kwargs) #使用**kwargs接受已经被定义的元素凤字典的键值对形式保存 print(hour*hourly_wage) return hour * hourly_wage salary1(8, 13, '今天的工作还是很努力,自我感觉良好','字符串内容',1, 9.8, day1 = 8, day2 = 8) ''' 函数的作用域 分为两种:全局作用域:函数内部可以访问外部的变量 局部作用域 ''' a = 1 def test11(): print(a)
""" 递归函数 数学中的阶乘 5的阶乘(5!) 5*4(5-1)*(5-1-1)*2(5-1-1-1)*1(5-1-1-1-1) 例如 n = 5 """ #n = 5的递归 num1 = 1 for i in range (1,6): num1 = num1 * i print(num1) # 创建递归函数 def func(n): if n <= 1: return 1 else: return n * func(n - 1) print(func(5)) ''' 匿名函数:无需def关键字定义函数,使用关键字 lambda 将函数写成一行,用变量名接收, 此时变量名就是函数名 ''' #创建一个两个数字相加的匿名函数 #格式 :lambda 定义参数:参数的运行结果 add = lambda x, y:x + y #使用变量接收匿名函数的内容,并且变量名作为函数名 #在列表list的排序方法(sort)中,可以使用lambda来定义排序的每个元素的操作 li = ['a',1, 7, 'b','c'] li.sort(key=lambda a: str(a)) print(li) li = ['watermelon', 'apple', 'banana'] li.sort(key=lambda x:len(x)) #key为参数名,后面的内容为排序的操作 print(li) #今日作业 ''' 使用(def)关键字创建自定义函数 通过(return )关键字可以结束函数,从而选择性的返回一个值 调用方 创建一个函数,参数是正整数,如果整数是质数,返回True,否则返回False '''
''' 函数的作用域 分为两种:全局作用域:函数内部可以访问外部的变量,但是不能直接修改 局部作用域:多用于嵌套的函数中在内部的函数里峳 改外部函数的变量 ''' a = 1 def test11(): global a #如果需要修改a 必须用global a = a + 1 #此处不能直接修改,需要用到关键字global进行声明,才能进行修改 print(a) test11() # def test4(): num = 5 def test11(): #局部变量进行修改时也要一个声明 :声明局部变量时要使用关键字nonlocal nonlocal num num = num + 1 print(num) test11() test4() """ 函数的闭包 访问嵌套函数里的内容时,可以隐藏嵌套中内部函数调用的代码 同时可以保护代码不被其它程序修改 """ def test5(): val = 0 def test6(): nonlocal val val += 1 print(val) return test6 #与普通内嵌套的内部函数名奖在外部函数被返回时 x = test5() x() #test5()() test5()()