python days_python 10 days

python 10 days

动态参数 *args,**kwargs

用户传入到函数中的实参数量不定时,或者是为了以后拓展,

此时要用到动态参数*args,**kwargs(万能参数。)

*args接收的是所有的位置参数。

**kwargs接收的是所有的关键字参数。

位置参数,*args,默认参数, **kwargs

位置参数:

def fun1(*args,**kwargs):

print(args)

print(**kwargs)

fun1(1,2,3,4)

结果:(1, 2, 3, 4)

关键字参数:

def fun1(*a,**ab):

print(ab)

fun1(x=1,y=2,z=3)

结果:{'x': 1, 'y': 2, 'z': 3}

混合参数:

def fun1(*a,**ab):

print(a)

print(ab)

fun1(1,2,3,x=4,y=5,z=6)

结果:(1, 2, 3)

{'x': 4, 'y': 5, 'z': 6}

加法计算器:

def func1(*args):

sum = 0

for i in args:

sum += i

return sum

print(func1(1,2,3))

结果:6

列表,字典,字符串等对元组的 *args,**kwargs转变

def func3(*args,**abc):

print(args)

l1 = [1, 2, 3]

l2 = [11, 21, 32]

l3 = {33,44,55,66}

func3(*l3,*l1,*l2)

转变前结果:({33, 66, 44, 55}, [1, 2, 3], [11, 21, 32])

def func3(*args,**abc):

print(args)

l1 = [1, 2, 3]

l2 = [11, 21, 32]

l3 = {33,44,55,66}

func3(*l3,*l1,*l2)

在func13添加 *

转变后结果:(33, 66, 44, 55, 1, 2, 3, 11, 21, 32)

字典的转变

def func3(*args,**abc):

print(abc)

dic = {"name": "光头"}

dic1 = {"age": 2000}

func3(**dic,**dic1)

结果:{'name': '光头', 'age': 2000}

def func1(*args, **kwargs):

print(args)

func1(1, 2, 3, 4)

func1(1, 2, 3, x=4, y=5, z=6)

结果:(1, 2, 3, 4)

(1, 2, 3)

位置参数,默认参数

def func2(a, b, sex='男'):

print(a)

print(b)

print(sex)

func2(1, 2, '女')

结果:1

2

位置参数,*args,默认参数

def func2(a, b, *args, sex='男'):

print(a)

print(b)

print(args)

print(sex)

func2(1, 2, 5,6,7,8,9,sex='女')

结果:1

2

(5, 6, 7, 8, 9)

位置参数,*args,默认参数,**kwargs

def func2(a, b, *args, sex='男',age=20, **kwargs):

print(a)

print(b)

print(args)

print(sex)

print(age)

print(kwargs)

func2(1, 2, 5, 6, 7, 8, 9, x=6, y=5, name='alex')

结果:1

2

(5, 6, 7, 8, 9)

20

{'x': 6, 'y': 5, 'name': 'alex'}

位置参数:如下

def func3(*args,**kwargs): # 函数的定义 *用意是聚合。

print(args) # (1,2,3,11,21,32)

# *的魔性用法

l1 = [1, 2, 3]

l2 = [11, 21, 32]

s1 = 'fjskalgf'

s2 = 'fjskrrrf'

tu1 = (1, 2, 3)

tu2 = (11, 22, 33)

func3(l1, tu1, tu2)

结果:([1, 2, 3], (1, 2, 3), (11, 22, 33),)位置参数,是一 一对应

动态参数:* 的魔性用法

def func3(*args,**kwargs): # 函数的定义 *用意是聚合。

print(args) # (1,2,3,11,21,32)

l1 = [1, 2, 3]

l2 = [11, 21, 32]

s1 = 'fjskalgf'

s2 = 'fjskrrrf'

tu1 = (1, 2, 3)

tu2 = (11, 22, 33)

func3(*l1, *tu1, *tu2)

结果:(1, 2, 3, 1, 2, 3, 11, 22, 33)动态参数,是多个值放在一起

*  的打散用法:把字典里多个元素打散,重新放在一个字典组合

def func3(**kwargs): # 函数的定义 *用意是聚合。

print(kwargs)

dic ={'name': 'alex','sex':'man'}

dic1 ={'age': 1000}

dic4={"hobby":"光头", "work":"前台"}

func3(**dic, **dic1,**dic4)

结果:{'name': 'alex', 'sex': 'man', 'age': 1000, 'hobby': '光头', 'work': '前台'}

def func3(*args,**kwargs):

l = []

for i in args: # ([1, 2, 3], [11, 21, 32])

l.extend(i)

args = tuple(l)

print(args)

# print(kwargs)

l1 = [1, 2, 3]

l2 = [11, 21, 32]

func3(l1,l2)

名称空间,加载顺序等

1,当程序运行时,代码从上至下一次读取,遇到变量与值

def func1():

a = 2

b = 3

func1()

结果: 空

2,他会在内存中开辟一个空间,存放变量与值的内存地址的对应关系。

3,这样存储变量与值得对应关系的空间叫做名称空间(命名空间)。

4,当解释器遇到函数时,他会将函数名存储在内存中,但是对于函数体莫不关心。

5,当函数执行时,他会通过函数名找到函数体,然后将函数体里面的变量等对应关系存放在一个

临时开辟的空间中,随着函数的结束,临时的空间关闭,这样的空间叫做临时名称空间。

名称空间:

内置名称空间

全局名称空间

局部名称空间

加载顺序:内置名称空间 ---> 全局名称空间(程序运行时) ---->局部名称空间(函数执行时)

作用域:

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

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

取值顺序(单项):局部名称空间(函数执行时) ---> 全局名称空间 ---> 内置名称空间

L local

E eclose

G global

B Built-in

sum = 666

name = '老男孩'

def func1():

# sum = 555

print(sum)

func1()

sum = 666 (global)

print(sum)

def func1():

sum = 555 # eclose

print(sum)

def inner():

pass

sum = 111 # local

# print(sum)

inner()

函数的嵌套

print(111) # 1

def func1():

name = 'alex'

print(name) # 2

def inner():

a = 2

print(a) # 3

inner()

func1()

结果: 111

alex

2

print(111)

def func1():

name = 'alex'

print(name)

def inner():

a = 2

print(a)

inner()

print(333)

func1()

结果:111

333

alex

2

print(111)

def func1():

name = 'alex'

print(name)

def inner():

a = 2

print(a)

print(444)

inner()

print(555)

func1()

结果:111

alex

444

2

555

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值