Python基础07

目录

1.函数

1.1语法

1.2函数的调用

1.3返回值

2.函数参数

2.1位置传参

2.2关键字传参

2.2.1缺省参数(默认参数)

2.2.2星号元组传参

2.2.3双星号字典传参

2.2.4命名关键字传参

3.可变不可变

4.匿名函数

5.变量作用域

5.1全局变量

5.2和局部变量

5.3LEGB优先调用顺序

5.4局部作用域修改全局变量

5.5局部作用域修改外部变量

6.函数内存分配

6.1函数内部的变量

6.2全局变量

7.递归(函数自调用)


1.函数

1.1语法

def 函数名():

        语句

1.2函数的调用

函数名(参数)

1.3返回值

用return返回

(1)如果函数内部无return语句或return不接任何语句,则返回None

def function1():
    return
print(function1())


def function2():
    return
print(function2())

(2)如果函数内部有return语句。若return执行,则返回return所连接的变量或表达式的值。若函数内部所有return都不执行,返回None,即无返回值。

def fun(n):
    if n==0:
        return 0
    if n==1:
        return 1
print(fun(0))# 返回1
print(fun(2))# 返回Npne

2.函数参数

2.1位置传参

传递实参时,实参与形参按位置相对应

语法:

def 函数名(形参名1, 形参名2, ...):
    pass

2.2关键字传参

传递参数时,实参与形参按名称相对应

允许函数调用时参数的顺序与声明时不一致

def fun(a,b):
   print(a)
   print(b)
fun(b=10,a=20)

位置传参和关键字传参可合用,但位置传参必须位于关键字传参之前

2.2.1缺省参数(默认参数)

在函数传参表中,缺省参数后面不能有非缺省参数

def fun(a,b,c=1,d=2):
    print(a)
    print(b)
    print(c)
    print(d)

# # 报错
# def fun(a,b,c=1,d=2,e):
#     print(a)
#     print(b)
#     print(c)
#     print(d)

2.2.2星号元组传参

语法:

def 函数名(*元组形参名):
    pass
def function(*args):
    print(*args)
function(1,2,3,4)

存储垃圾参数

2.2.3双星号字典传参

dt=dict(a=1,b=2,c=3)
def fun(a,b,c):
    print(a)
    print(b)
    print(c)
fun(**dt)

2.2.4命名关键字传参

def function(*args,**kwargs):
    print(*kwargs)
    print(*args)

# # 注意顺序,
# def function(**kwargs,*args):
#     print(*kwargs)
#     print(*args)

非关键字参数必须位于关键字参数之前,否则报错

def fun2(a,b,c,*args):
    print(*args)
    print(a)
    print(b)
    print(c)
fun2(5,6,7,8)

# def fun1(*args,a,b,c):
#     print(args)
#     print(a)
#     print(b)
#     print(c)
# fun1(1,2,3,4)#报错

3.可变不可变

变量中的数据就具有可变和不可变两种性质:

不可变:整数、字符串、元组。

可变:列表,字典,集合。

4.匿名函数

用lamdba关键字创建

lambda [函数的参数列表]: 表达式

pow1=lambda x,y:x**y
print("2**8=",pow1(2,8))

5.变量作用域

5.1全局变量

在函数外部,所有的函数都可访问

5.2和局部变量

在函数内部,在函数内部可被访问

5.3LEGB优先调用顺序

Local:本地作用域,在函数内部定义

Enclosing:闭包函数外的函数作用域,嵌套函数的外部函数中定义的变量

Global:全局作用域

Built-inPython:内建作用域预定义的变量

5.4局部作用域修改全局变量

在函数内部修改不可变类型的全局变量,用关键字:global

a=10#全局变量
def fun():
    global a
    a=15
fun()
print(a)

5.5局部作用域修改外部变量

在函数内部修改不可变类型的的外部变量,用关键字:nonlocal

def fun2():
    b = 100
    def fun3():
        nonlocal b
        b = 200
    fun3()
    print(b)
fun2()

6.函数内存分配

6.1函数内部的变量

在未执行时,并没有分匹配空间。

在函数执行完后,被销毁。

6.2全局变量

若未销毁,一直存在。

7.递归(函数自调用)

函数直接或间接调用自己

# 实现阶乘函数
def factorial(n):
    if(n<=1):
        return 1
    return  n * factorial(n - 1)
print(factorial(5))

# 实现Fibonacci数列函数
def fibonacci(i):
    if i==0:
        return 0
    elif i==1:
        return 1
    else:
        return fibonacci(i-1)+fibonacci(i-2)
print(fibonacci(8))

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值