1.16.2 函数进阶(非固定参数、全局与局部变量)、返回值、嵌套函数
非固定参数若你的函数在定义时不确定用户想传入多少个参数,就可以使用非固定参数。def stu_register(name,age,*args): # *args 会把多传入的参数变成一个元组形式print(name,age,args)
stu_register("Alex",22)
#输出
#Alex 22 () #后面这个()就是args,只是因为没传值,所以为空
stu_register("Jack",32,"CN","Python")
#输出
# Jack 32 ('CN', 'Python')还可以有一个**kwargs。def stu_register(name,age,*args,**kwargs): # *kwargs 会把多传入的参数变成一个dict形式
print(name,age,args,kwargs)
stu_register("Alex",22)
#输出
#Alex 22 () {}#后面这个{}就是kwargs,只是因为没传值,所以为空
stu_register("Jack",32,"CN","Python",sex="Male",province="ShanDong")
#输出
# Jack 32 ('CN', 'Python') {'province': 'ShanDong', 'sex': 'Male'}
局部变量 name = "Alex Li"
def change_name(name):
print("before change:",name)
name = "金角大王,一个有Tesla的男人"
print("after change", name)
change_name(name)
print("在外面看看name改了么?",name)输出
before change: Alex Li
after change 金角大王,一个有Tesla的男人
在外面看看name改了么? Alex Li全局与局部变量在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
当全局变量与局部变量同名时:
在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。
返回值 要想获取函数的执行结果,就可以用return语句把结果返回注意:
[*]函数在执行过程中只要遇到return语句,就会停止执行并返回结果,so 也可以理解为 return 语句代表着函数的结束
[*]如果未在函数中指定return,那这个函数的返回值为None
嵌套函数 看上面的标题的意思是,函数还能套函数?of course
name = "Alex"
def change_name():
name = "Alex2"
def change_name2():
name = "Alex3"
print("第3层打印",name)
change_name2() #调用内层函数
print("第2层打印",name)
change_name()
print("最外层打印",name)执行结果是:第3层打印 Alex3
第2层打印 Alex2
最外层打印 Alex此时,在最外层调用change_name2()会出现什么效果?没错, 出错了, 为什么呢?嵌套函数的用法会了,但它有什么用呢?下节课揭晓。。。
页:
[1]