【python】函数基础

创建函数

  1. 什么是函数
    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数在执行后会自动销毁空间,一个函数封装一个功能。

  2. 定义函数

    def ale():
    # def:关键字
    # ale:函数名
    # ():存放参数
    
  3. 调用函数
    通过使用函数名加括号方式调用函数

    ale()
    
  4. 返回值

    代码:

    def ale():
        return "返回值"
        print("aaa")
    print(ale())
    

    结果:

    返回值
    

    return将返回值返还给调用者,没有返回值是结果为None,有多个返回值时返回一个元组类型,return后的代码不执行!

  5. 注释
    通过注释描述函数的功能

    def alen(a,b):
        """
       	其他描述
     	:param a: 参数a的描述
     	:param b: 参数b的描述
       	:return: 返回值的秒速
       	"""
        return "123"
    

    查看的函数的注释:函数名.doc
    查看的函数的名字:函数名.name

函数的参数

  1. 形式参数
    在定义函数时函数名后面括号中的变量名称称为形式参数(简称形参)
  2. 实际参数
    主调函数中调用一个函数时,函数名后面括号中的参数称为实际参数(简称实参)
  3. 传参
    将实参传递给形参的过程就是传参
    def ale(a):
    	print(a)
    ale(1)
    # a:形参
    # 1:实参
    
  4. 位置参数
    即普通的参数
    def ale(a, b, c):
    	pass
    
  5. 默认参数
    指定默认参数情况下调用函数时可以不写对于值,默认会使用设置的值,如果在调用函数时给了值,则覆盖,默认参数要放在位置参数后。
    def alen(a=1,b="2"):
    	pass
    
  6. 关键字参数
    通过关键字进行传参
    def alen(a,b,c):
    	pass
    alen(a="a",b="b",c="c")
    
  7. 动态参数
    *args
    可以接受动态的位置参数,得到的是一个元组,可通过打散获得各值
    def alen(*args): # 聚合
    	print(args) 
    	print(*agrs) # 打散
    alen(1,2,3,4)
    # 结果:
    # (1, 2, 3, 4)
    # 1 2 3 4
    
    **kwargs
    可以接受动态的关键字参数,得到的是一个字典,可通过打散获得键
    def alen(**kwargs):
    	print(kwargs) 
    	print(*kwargs) # 打散
    alen(a=1,b=2,c=3)
    # 结果:
    # {'a': 1, 'b': 2, 'c': 3}
    # a b c
    
    万能传参
    可以接收所有参数
    def alen(*args,**kwargs):
    	print(args,kwargs)
    	alen(1,2,a=3,b=4)
    
    仅限关键字参数
    位置介于动态位置参数和动态关键字参数之间,使用关键字传参方式传参
    def a(a,*args,b,**kwargs):
    	print(a,args,b,kwargs,)
    a(1,2,3,b="4",s=5)
    
  8. 优先级
    位置参数>动态位置参数>默认参数(关键字参数)>动态关键字参数

名称空间

内置空间

python自带的内置命名空间,任何模块均可以访问,放着内置的函数和异常。

全局空间

每个模块加载执行时创建的,记录了模块中定义的变量,包括模块中定义的函数、类、其他导入的模块、模块级的变量与常量。

局部空间

每个函数所拥有的命名空间,记录了函数中定义的所有变量,包括函数的入参、内部定义的局部变量。

加载顺序

内置空间>全局空间>局部空间

作用域

全局作用域

  1. 内置空间
  2. 全局空间

局部作用域

  1. 局部空间

global和nonlocal

global

修改全局空间的变量对应的值

num = 1
def numadd():
    global num
    num += 1
numadd()

nonlocal

修改父级空间的变量对应的值,按照就近原则寻找,不会修改全局空间中的变量

def numaddf():
    num = 1
    def numadd():
        nonlocal num
        num += 1
    numadd()
numaddf()

函数名的第一类对象

1.函数名可以作为值

代码:

def alen():
    print(123)
name = alen # 可以获得函数的内存地址
print("name的值:"+name)
name() # 通过内存地址后加括号可以调用函数

结果:

name的值:<function alen at 0x00000188A4869B70>
123

2.函数名可以做为元素存在容器中
代码:

def alen():
    print(123)
li = [alen,alen] # 遍历容器拿到的函数名也可以调用函数
print(li)
li[0]()

结果:

[<function alen at 0x0000018EA8E99B70>, <function alen at 0x0000018EA8E99B70>]
123

3.函数名可以做为其他函数的参数
代码:

def alen(name):
    print("这是alen")
    name()
def alen1():
    print("这是alen1")
alen(alen1)

结果:

这是alen
这是alen1

4.函数名可以作为函数的返回值
代码:

def alen1():
    print("这是alen1")
def alen2():
    print("这是alen2")
    return alen1
count = alen2()
print(count)
count()

结果:

这是alen2
<function alen1 at 0x000001C07FF29B70>
这是alen1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值