51学通信论坛2017新版
标题: 1.16.2 函数进阶(非固定参数、全局与局部变量)、返回值、嵌套函数 [打印本页]
作者: admin 时间: 2018-4-15 21:35
标题: 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'}
复制代码
作者: admin 时间: 2018-4-15 21:44
局部变量 - 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
复制代码全局与局部变量
在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
当全局变量与局部变量同名时:
在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。
作者: admin 时间: 2018-4-15 21:47
返回值 要想获取函数的执行结果,就可以用return语句把结果返回
注意:
- 函数在执行过程中只要遇到return语句,就会停止执行并返回结果,so 也可以理解为 return 语句代表着函数的结束
- 如果未在函数中指定return,那这个函数的返回值为None
作者: admin 时间: 2018-4-15 21:52
嵌套函数 看上面的标题的意思是,函数还能套函数?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()会出现什么效果?没错, 出错了, 为什么呢?嵌套函数的用法会了,但它有什么用呢?下节课揭晓。。。
欢迎光临 51学通信论坛2017新版 (http://bbs.51xuetongxin.com/) |
Powered by Discuz! X3 |