函数定义
def calc(a,b):
c=a+b
return c
result=calc(10,20)
print(result)
函数参数传递
1.位置实参
def calc(a,b):
c=a+b
return c
calc(10,20)
2.关键字实参
def calc(a,b):
c=a+b
return c
calc(b=10,a=20)
函数参数传递内存分析
def fun(arg1,arg2):
print("arg1=",arg1)
print("arg2=",arg2)
arg1=100
arg2.append(10)
print("arg1=",arg1)
print("arg2=",arg2)
n1=11
n2=[22,33,44]
print(n1)
print(n2)
fun(n1,n2)
print(n1)
print(n2)
如果是不可变对象时,在函数体的修改不会影响实参的值,arg1的修改为100,不会影响n1的值
如果是可变对象,在函数体的修改会影响实参的值,arg2的修改,append(10),会影响到n2的值
函数返回值
- 如果函数没有返回值,函数执行完毕之后,不需要给调用处提供数据,return可以省略不写
- 函数的返回值,如果是1个,直接返回类型
- 函数的返回值,如果是多个,返回的结果为元组
函数的参数定义
- 个数可变的位置参数
def fun(*args):
print(args)
fun(10)
fun(10,20,30)
- 个数可变的关键字形参
def fun1(**args):
print(args)
fun1(a=10)
fun1(b=10,c=20,d=30)
在一个函数的定义过程中,既有个数可变的关键字形参,也有个数可变的位置形参,要求:个数可变的位置形参放在个数可变的关键字形参之前
变量作用域
def fun():
global age
age=20
print(age)
print(age)