【python】函数详解

2023-02-26 16:49:03 浏览数 (2)

文章目录

  • 基本函数-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)的形式导入存放所有未命名的变量参数。 加了两个星号 :参数会以字典的形式导入存放已命名的变量参数

代码语言:javascript复制
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))

0 人点赞