标签:执行 函数定义 名称空间 角度 return **kwargs 运行 地址 oca
形参角度:
名称空间
全局名称空间,局部,内置
作用域
函数的嵌套
内置函数 globals,locals
关键字:nonlocal,global
函数是以功能为导向,减少重复代码,体改代码的可读性
def func():
函数体
函数的调用:func()
func()
func()
函数的返回值
函数的参数
万能参数
*魔法用法
def func(*args): #从实参角度:定义一个函数时,*所有的位置参数聚合到一个元组中,赋值给了args
print(f'你都看过什么书:{args}')
func('为什么学生不喜欢上学','稀缺','穷爸爸,富爸爸','腾讯传')
#你都看过什么书:('为什么学生不喜欢上学', '稀缺', '穷爸爸,富爸爸', '腾讯传')
#函数定义时:**将所有的关键字参数聚合到哟个字典中,将这个字典赋值给了kwargs
def func(**kwargs):
print(kwargs)
func(name = '太白',age = 18,sex = '男')
#{'name': '太白', 'age': 18, 'sex': '男'}
def func(*args,**kwargs):
print(args)
print(kwargs)
func(*[1,2,3],*[4,5,6])#(1, 2, 3, 4, 5, 6){}
func((1,2,3,4,5,6))
func(**{'name':'alex','age':18,'sex':'男'})
func(name='alex',age=18,sex ='男')
#() {'name': 'alex', 'age': 18, 'sex': '男'}
形参顺序
#*args 的位置
def func(位置参数,*args,关键字参数):
函数体
def func(a,b,*args,sex = '女'):
print(a) #1
print(b) #2
print(args) #(3,4,5,5)
print(sex) #男
func(1,2,3,4,5,5,sex = '男')
#**kwargs 的位置
def func(位置参数,*args,关键字参数,**kwargs):
函数体
def func(a,b,*args,sex = '女',**kwargs):
print(a) #1
print(b) #2
print(args) #(3,4,5,5)
print(sex) #男
print(kwargs) #{'name':'alex','age':18}
func(1,2,3,4,5,5,sex = '男',name = 'alex',age = 18)
#形参角度第四种参数:仅限关键字参数
def func(位置参数,*args,关键字参数,c,**kwargs):
函数体
def func(a,b,*args,sex = '女',c,**kwargs):
print(a) #1
print(b) #2
print(args) #(3,4,5,5)
print(sex) #男
print(kwargs) #{'name':'alex','age':18}
print(c) #关键字
func(1,2,3,4,5,5,sex = '男',c ='关键字',name = 'alex',age = 18)
'''
形参角度最终的顺序:
位置参数,*args,默认参数,仅限关键字参数,**kwargs
'''
名称空间
取值顺序、加载顺序
加载顺序:内置名称空间-->全局名称空间-->局部名称空间
取值顺序:(就近原则)
作用域
#局部作用域可以引用全局作用域的变量
date = '周五'
def func():
a = 222
print(date)
print(a)#报错
func()#周五
print(a)#报错
#局部作用域不能改变全局变量
count = 1
def func():
count += 2#报错
print(count)#报错
func()
#关键字:global
#对全局变量进行赋值
name = 'zhang'
def func():
name = 'liu'
def inner():
globar name
name = 'ma'
inner()
print(name)
func()#liu
print(name)#ma
#关键字:nonlocal
#对局部变量进行赋值
name = '张'
def func():
name = '刘'
def inner():
nonlocal name#找到上一级的name
name ='码云'
inner()
print(name)
func()#码云
print(name)#张
内置函数:globals,locals
a = 1
b = 2
def func():
name = 'jk'
age = 99
print(globals())#返回字典:字典里面的键值对:全局作用域的所有内容
print(locals) #返回字典:字典里面的键值对:当前作用域的所有内容
标签:执行 函数定义 名称空间 角度 return **kwargs 运行 地址 oca
原文地址:https://www.cnblogs.com/xiaohei-chen/p/11915015.html