标签:import 模块 res sleep 为我 解释 turn 形参 企鹅
函数的传参:形参的第三种参数:万能参数--动态参数(解决参数数目不定的问题)
def eat(food1,food2,food3):
print(f'我请你吃:{food1},{food2},{food3}')
eat('蒸羊羔','蒸熊掌','蒸鹿尾')
当给函数传入的参数数目不定时,之前的传参方式解决不了问题。
万能参数,动态参数。 *args
def eat(food1,food2,food3):
print(f'我请你吃:{food1},{food2},{food3}')
eat('蒸羊羔','蒸熊掌','蒸鹿尾','烧花鸭','烧企鹅')
def eat(*args): # 将实参角度:定义一个函数时,* 所有的位置参数聚合到一个元组中。
print(args)
print(f'我请你吃:{args}')
eat('蒸羊羔','蒸熊掌','蒸鹿尾','烧花鸭','烧企鹅')
函数接收不定个数的数字实参,将最终的和返回出去。
def sum1(*args):
print(args) (100, 2, 67, 3)
result = 0
for i in args:
result += i
return result
print(sum1(100,2,67,3))
**kwargs
def func(**kwargs): # 函数的定义时:**将实参角度所有的关键字参数聚合成了一个字典,给了kwargs.
print(kwargs)
func(name='alex',age=84,hobby='唱跳rap篮球')
*args,**kwargs 万能参数
def func(*args,**kwargs):
print(args,kwargs)
func(1,2,4,'fjdksal',age=84,hobby='唱跳rap篮球')
*的魔性用法: (函数中)
def func(*args,**kwargs):
print(args) # (1, 2, 3,'太白', 'wusir', '景女神')
print(kwargs)
l1 = [1, 2, 3]
l2 = ['太白', 'wusir', '景女神']
func(l1,l2)
func(*l1,*l2) # 当函数的执行时:*iterable 代表打散。
func(*[1, 2, 3],*(11,22),*'fdsakl') # 当函数的执行时:*iterable 代表打散。
def func(*args,**kwargs):
print(args)
print(kwargs)
func(**{'name':"alex"},**{'age': 73,'hobby': '吹'})
当函数的执行时:**dict 代表打散。
函数外:处理剩余元素
a,b,*c = [1,2,3,4,5]
a,*c,b, = [1,2,3,4,5]
a,*c = range(5)
a,*c,b = (1,2,3,4,5,6)
print(a,c,b)
函数形参角度,形参的顺序
*args的位置
*args不能放在位置参数前面,a,b取不到值
def func(*args,a,b,sex='man',):
print(a)
print(b)
print(sex)
print(args)
print(kwargs)
func(1,2,4,5,6)
*args如果想要接收到值之前,肯定要改变sex默认参数。
def func(a,b,sex='man',*args):
print(a)
print(b)
print(sex)
print(args)
print(kwargs)
func(1,2,4,5,6)
def func(a,b,*args,sex='man'):
print(a)
print(b)
print(sex)
print(args)
print(kwargs)
func(1,2,4,5,6)
func(1,2,4,5,6,sex='women')
**kwargs
位置参数,*args,默认参数,**kwargs
def func(a,b,*args,sex='man',**kwargs,):
print(a)
print(b)
print(sex)
print(args)
print(kwargs)
func(1,2,4,5,6,name='太白',age=18)
形参角度第四种传参方式:仅限关键字参数 (了解)
位置参数,*args,默认参数,仅限关键字参数,**kwargs
def func(a,b,*args,sex='man',c,**kwargs,):
print(a)
print(b)
print(sex)
print(c)
print(args)
print(kwargs)
func(1,2,4,5,6,67,c=666,name='太白',age=18,)
从空间角度研究函数
name = 'alex'
l1 = [1,2,3]
def func():
name = '太白'
print(666)
func()
# def func1():
# age = 18
模块
# import time
# # print(time.time())
# print(111)
# time.sleep(1)
# age = 18
#
# print(66)
# input()
# 变量(函数名也叫变量)
# input = 666
# print(input)
# 从全局寻找input ————> 全局名称空间 ——————> 内置
# input = '太白'
# def func():
# # input = 666
# print(input)
#
# func()
# 从局部寻找input ——————> 局部名称空间 ————> 全局名称空间 ——————> 内置
# 取值顺序:单向不可逆
# def func():
# name = 'alex'
#
# func()
# print(name)
# name = '太白'
# def func():
# # name = 'alex'
# def inner():
# print(name)
# inner()
# func()
作用域
作用域就是作用范围, 按照生效范围来看分为全局作用域和局部作用域
全局作用域: 包含内置命名空间和全局命名空间. 在整个文件的任何位置都可以使用(遵循 从上到下逐?执行).
局部作用域: 在函数内部可以使用.
作?域命名空间:
内置函数:locals,globals
"""
此文件研究的是内置函数 globals locals
"""
name = 'alex'
l1 = [1, 2, 3]
def func():
age = '18'
print(globals()) # 全局作用域所有的内容
print(locals()) # 当前位置
name = 'alex'
l1 = [1, 2, 3]
def func():
age = '18'
oldboy = '老男孩教育'
print(globals()) # 全局作用域所有的内容
print(locals()) # 当前位置的变量与值的对应关系
func()
name = 'alex'
l1 = [1, 2, 3]
def func():
age = '18'
oldboy = '老男孩教育'
def inner():
name_class = 'python23期'
print(globals()) # 全局作用域所有的内容
print(locals()) # 当前位置的变量与值的对应关系
inner()
func()
例1:
def func1():
print('in func1')
print(3)
def func2():
print('in func2')
print(4)
func1()
print(1)
func2()
print(2)
in func1
3
1
in func2'
4
2
例2:
def func1():
print('in func1'
print(3)
def func2():
print('in func2')
func1()
print(4)
print(1)
func2()
print(2)
'''
1
in func2
in func1
3
4
2
'''
# # 例3:
def fun2():
print(2)
def func3():
print(6)
print(4)
func3()
print(8)
print(3)
fun2()
print(5)
'''
3 2 4 6 8 5
'''
标签:import 模块 res sleep 为我 解释 turn 形参 企鹅
原文地址:https://www.cnblogs.com/-777/p/11047827.html