文章目录
- 基本函数-function
- 模块的引用
- 模块搜索路径
- 不定长参数
- 参数传递
- 传递元组
- 传递字典
- 缺陷,容易改了原始数据,可以用copy()方法避免
- 变量作用域
- 全局变量
- 闭包closure
- nonlocal 用了这个声明闭包变量才能在内部修改闭包变量
- 匿名函数lambda表达式
基本函数-function
代码语言:javascript复制if '__main__' == __name__:
a=100
print(id(a))
模块的引用
代码语言:javascript复制import ku as liebiao
liebiao=[1,2,34,5,6,8,11]
diaoyong=bianle.maopao(liebiao) #只可以用新的变量名,更改库名
print(diaoyong)
模块搜索路径
先搜当前文件夹内有没有,再去指定路径找
代码语言:javascript复制import sys
print(f"sys.path: {sys.path}")
'''
['/Users/mac/Desktop/video/python/day16',
'/Users/mac/Desktop/video/python',
'/Applications/anaconda3/lib/python36.zip',
'/Applications/anaconda3/lib/python3.6',
'/Applications/anaconda3/lib/python3.6/lib-dynload',
'/Applications/anaconda3/lib/python3.6/site-packages',
'/Applications/PyCharm.app/Contents/helpers/pycharm_matplotlib_backend']
'''
不定长参数
python自定义函数中有两种不定长参数,
第一种是*XXX,在传入额外的参数时可以不用指明参数名
,直接传入参数值即可。
第二种是**XXX,这种类型返回的是字典
,传入时需要指定参数名
。
加了一个星号 :不定长参数会以元组(tuple)的形式导入
,存放所有未命名的变量参数
。
加了两个星号 :参数会以字典
的形式导入
,存放已命名的变量参数
。
def water(name,*args):
print(name)
for i in args:
print(i)
if '__main__' == __name__:
water("donggua ",1,2,3,4,5,600)
参数传递
传递元组
代码语言:javascript复制def f(aaa):
print(aaa)
if '__main__' == __name__:
f((123,1,2,3))
传递字典
代码语言:javascript复制def f(aaa):
print(aaa)
if '__main__' == __name__:
f({"123":1})
缺陷,容易改了原始数据,可以用copy()方法避免
代码语言:javascript复制def f(aaa):
print(aaa)
if '__main__' == __name__:
f({"123":1}.copy())
变量作用域
全局变量
代码语言:javascript复制global j
闭包closure
介于全局变量 局部变量 之间
nonlocal 用了这个声明闭包变量才能在内部修改闭包变量
匿名函数lambda表达式
代码语言:javascript复制if '__main__' == __name__:
a=lambda x, y: x y
print(a(1,5))