python——第六章 函数

1.函数的定义与调用

2.函数的参数及返回值

3.变量的作用域

4.函数的递归调用

5.函数式编程


6.1 函数的定义与调用

格式: def<函数名>(<参数列表>):

                   <函数体>

与c不同的是,没有规定返回值类型

调用时:<函数名>(<参数列表>)

tips:

python不允许在函数未声明之前进行引用或调用


6.2函数的参数和返回值

1.参数的传递与修改 对于不可变类型int float string tuple,直接将值传给形参,引用了值的地址

def func1(n):

        n=20

        print(n)

a=10

func1(a)

打印a的值仍为10,但func1的结果为20

2.如果实际参数的数据类型是可变的对象(列表,字典),则参数的传递方式将采用引用传递方式

def func2(n):
    n[1] = 10
    print(n)

a=[1,2,3]
func2(a)
print(f"传递前的a变为{a}")

结果为:

[1, 10, 3]
传递前的a变为[1, 10, 3]

为了保证原始列表的安全,可以把列表的切片作为实参传递给函数

tips:

1.当一个函数有多个参数时,实参默认采用的是按位置顺序传递给形参

2.函数定义时可以给默认值

def func1(a,b,c = 3):
    print(a,b,c)

3.python可以接受非固定的数目的参数

def func1(*a):
    print(a)

func1(1,2,3)//结果为(1,2,3)
func1(1,2)//结果为(1,2)

默认为元组

4.函数的返回值

定义函数时不需要声明函数的返回值类型

函数返回值类型与return语句返回的表达式类型一致

可以返回元组类型,类似返回多个值

list1=[]
def fun(*n):

    a=sum(n)/len(n)

    for i in n:
        if(i < a):
            list1.append(i)
    return a,list1

print(fun(1,2,3,4))

6.3变量的作用域

标识符的作用域为其声明在程序里的可应用范围

全局变量与局部变量

全局变量与全局变量的生命周期

a = 1
def func1():
    b = 10
    global c
    c = 20
    print("Local:",b)
func1()
print("Global:",a)
print("Global:",c)

内嵌函数:在函数里面再定义一个新的函数(不是嵌套调用)

如果在函数体内不调用内嵌的函数,那么无法在外部调用

标识符解析的LEGB法则:

        local(局部作用域) ---->enclosing(函数范围作用域)

        global(全局作用域)----->build-in(内建对象作用域)

在 if while for等语句中定义的变量,后续仍可以继续使用,并不产生新的作用域,只有module class def才会出现新的作用域

x=1
def f1():
    print("f1:",x)

def f2():
    x =3
    print("f2:",x)
    f1()

f2()
x = 1
def f1():
    # print("f1",x)
    global x
    x = 2
    print("f1:",x)

f1()
print(x)

f1: 2
2

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值