python 临时函数_Python 函数 II

万能参数

*魔法用法

动态传参:*args

def func(*args): #从实参角度:定义一个函数时,*所有的位置参数聚合到一个元组中,赋值给了args

print(f'你都看过什么书:{args}')

func('为什么学生不喜欢上学','稀缺','穷爸爸,富爸爸','腾讯传')

#你都看过什么书:('为什么学生不喜欢上学', '稀缺', '穷爸爸,富爸爸', '腾讯传')

**kwagrs

#函数定义时:**将所有的关键字参数聚合到哟个字典中,将这个字典赋值给了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

'''

名称空间

全局名称空间

py文件运行时开辟的,存放的是执行py文件(除去函数内部)的所有变量与值(地址)的对应关系,整个py文件结束后,才会消失

临时(局部)名称空间

函数执行时,在内存中临时开辟的一个空间,存放的函数中的变量与值的对应关系,随函数的结束而消失

内置名称空间

python源码提供的一些内置函数

取值顺序、加载顺序

加载顺序:内置名称空间-->全局名称空间-->局部名称空间

取值顺序:(就近原则)

作用域

全局作用域:全局名称空间,内置名称空间

局部作用域:局部名称空间

#局部作用域可以引用全局作用域的变量

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) #返回字典:字典里面的键值对:当前作用域的所有内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值