函数的定义
先定义再使用
def
定义函数的时候代码不执行
调用函数的时候代码才执行
函数的参数
形参
定义函数时候的参数
形参必须是变量
实参
调用函数时候的参数
实参可以是常量,变量和表达式
函数的返回值
return
如果一个函数没有return语句,那么这个函数就没有返回值
函数的嵌套
一个函数的内部调用另外一个函数
变量的作用域
局部变量
在函数内部定义的变量
变量的生命周期只局限在函数内部
全局变量
定义在函数的外部,生命周期和程序一致
global 在函数内部修改全局变量的值
局部变量和全局变量重名
如果在函数内部定义一个变量,名字和全局变量重名,那么在这个函数内部只能使用局部变量
#全局变量与局部变量重名 num2 = 1 def my_func1(): num2 = 30 #这里不是为全局变量赋值,这里是定义了一个局部变量,名字和全局变量重名 print(num2)#打印的局部变量num2的值 num2 += 1#这里改的局部变量num2的值 def my_func2(): print(num2) #全局变量num2 my_func1() my_func2() print(num2) #打印的全部变量num2的值
形参和实参的值传递
如果形参的类型为数字或者字符串,在函数内部修改了形参的值,实参的值不会改变
def my_func1(a): a += 1 print(a) a = 10 my_func1(a) print(a)
如果形参的类型为列表、集合、字典,形参的值改变,会影响实参的值
a = [1,2,3] def my_func1(a): a[0] = 10 print(a) my_func1(a) print(a)
形参的缺省值
定义形参的时候可以提供一个缺省值,调用函数的时候,如果没有提供相应的实参,那么形参会采用缺省值
def my_test1(a=1,b=10): print(a,b) my_test1(1,2) my_test1(100) my_test1() my_test1(100,12)
不能把有缺省值的形参写在没有缺省值的形参的前面
匿名函数
lambda是给特别小型的函数准备的一个简化语法
不用写def,也不用写return
一行代码就能定义一个函数
语法
lambda 参数1,参数2,......:函数执行代码
# def my_sum(a,b): # return a + b my_sum = lambda a,b:a+b num1 = my_sum(5,6) print(num1)
带有if的匿名函数
# def my_max(a,b): # if a > b: # return a # else: # return b # num1 =my_max(4,5) # print(num1) num1 = (lambda a,b : a if a>b else b)(4,5) print(num1)
lambda注意事项
匿名函数内部只能有一条语句,而且这条语句要有个具体的值返回
匿名函数不能使用print
标签:函数,num2,python,形参,print,my,def From: https://www.cnblogs.com/suitcases/p/17124218.html