Python基础–详细记录Fifth_Chapter

Python基础–详细记录Fifth_Chapter

1、函数概念

函数概念

2、函数分类

函数分类

3、函数定义和调用

函数定义和调用
函数定义和调用

3.1 形参和实参

形参和实参

3.2 文档字符串

文档字符串

3.3 返回值

返回值

3.4 函数是对象

函数是对象

def test01():
    print("abc")
test01()
c = test01
c()
print(id(test01))

3.5 全局变量和局部变量

全局变量和局部变量
效率
输出局部变量和全局变量

a = 3
def f():
    a =5
    b = 4
    print(a)
f()
print(a)

3.6 参数的传递

参数的传递
可变对象传递:
可变对象传递
指向同一个对象,不产生新内存

b=[10,20]
def f2(m):
    print("m",id(m))
    m.append(30)
f2(b)
print("b",id(b))
print(b)

不可变对象传递:
不可变对象传递

a=1
print(id(a))
def f1(a):
    print(id(a))
    a +=1
    print(id(a))
f1(a)

3.7 浅拷贝和深拷贝

浅拷贝和深拷贝
浅拷贝只拷贝地址(左栈右堆,拷贝对象地址):
浅拷贝
深拷贝拷贝所有对象:
深拷贝
浅拷贝:

import copy
a = [10,20,[5,6]]
b = copy.copy(a)
print("a",a)
print("b",b)
b.append(30)
b[2].append(7)
print("浅拷贝")
print("a",a)
print("b",b)

结果
举例

传递不可变对象是浅拷贝
浅拷贝
传递对象为不可变对象,不可变对象包含子集可变,修改次对象,源对象也发生变化

a = (10,20,[5,6])
print("a",id(a))
def test01(m):
    print("m",id(m))
    m[2][0] = 888
    print(m)
    print("m:",id(m))
test01(a)
print("a",id(a))

对象
分析

深拷贝:

a = [10,20,[5,6]]
    b = copy.deepcopy(a)
    print("a",a)
    print("b",b)
    b.append(30)
    b[2].append(7)
    print("深拷贝")
    print("a",a)
    print("b",b)

深拷贝
a和b完全独立:
深拷贝

3.8 函数参数

位置参数:
位置参数

默认值参数:
默认值参数

命名参数:
命名参数

可变参数:
可变参数
可变参数
强制命名:
强制命名

3.9 lambda函数

形参:函数体
lambda
例子

f = lambda x :x+2
print(f(1))

3.10 eval函数

eval

3.11 递归函数

递归
递归案例1
递归案例2

3.12 嵌套函数

嵌套函数
什么时候使用嵌套函数:
例子中,内部函数只是为外部函数服务

嵌套用途
举例
nonlocal声明:

a = 100
def outer():
    b=10
    def inner():
        nonlocal b      #内部函数可直接饮用外部变量,如若修改需加nonlocal声明
        print("inner",b)
        b = 20
        global a
        a =1000
    inner()
    print("outer",b)
outer()
print(a)

3.12 LEGB

LEGB

def outer():
    # str = "bbb"
    def inner():
        # str ="aaa"
        print(str)

    inner()
outer()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值