欢迎光临~扬州用友(畅捷通)软件--专业网络软件开发服务商-扬州七龙网络科技有限公司
  咨询电话:15952766660

python

基础函数总复习2

"""

    可变和不可变类型的传参

"""



def fun01(a):

    # 修改局部变量,对外部没有影响

    a = 1



g01 = 100

g02 = [1, 2, 3]

fun01(g02)

print(g02)



def fun02(a):

    # 通过变量,修改指向的对象,对外部有影响.

    a[0] = "改了"



g03 = [1, 2, 3]

fun02(g03)

print(g03)



class MyClass01:

    pass



def fun03(p):

    # 通过变量,修改指向的对象,对外部有影响.

    p.a = "改了"



c01 = MyClass01()

c01.a = 1

fun03(c01)

print(c01.a)


"""

    参数

"""



#    位置形参 默认  关键字

def fun01(a, b, c=0, *, d):

    pass



# 位置形参  关键字

fun01(1, 2, d=3)



# 位置实参无限制  [合并实参]

def fun02(*args):

    print(args)



fun02(2, 3, 4, 4, 5)



# 关键字实参无限制 [合并实参]

def fun03(**kwargs):

    print(kwargs)



fun03(a=1, b=2)



def fun04(a, b, c):

    pass



list01 = [1, 2, 3]

fun04(*list01)  # [拆分实参]



def fun05(a, b, c):

    pass



dict01 = {"a": 1, "b": 2, "c": 3}

fun05(**dict01)  # [拆分实参]


"""

# 生成器原理

class MyGenerator:

    # 生成器 = 可迭代对象 + 迭代器

    def __init__(self,stop_value):

        self.begin = 0

        self.stop_value = stop_value


    def __iter__(self):

        return self


    def __next__(self):

        if self.begin >= self.stop_value:

            raise StopIteration


        temp = self.begin

        self.begin+=1

        return temp

"""


# 面试题:

# 请简述,生成器与迭代器

# 生成器 本质就是 迭代器 + 可迭代对象.

# 而可迭代对象就是为了可以迭代(for),而迭代的本质就是不断调用迭代器next方法.

# 生成器最重要的特点调用一次next,计算一次结果,返回一个数据,

# 这个过程称之为惰性操作/延迟操作.

# 在海量数据下,可以大量节省内存.


# 惰性操作 > 立即操作(灵活获取结果)

# list(生成器)


# 解释器会将函数定义到方法区(存储一份),连同默认参数一起创建.

# 所以不指定参数时,使用的就是那一份列表对象.

# 总结:默认参数,不要使用可变对象.

def fun01(x, list_target=[]):

    print(id(list_target))

    for i in range(x):

        list_target.append(i)

    print(list_target)



fun01(3)  # [0, 1, 2]

fun01(3)  # [0, 1, 2, 0, 1, 2]


list01 = []

fun01(3, list01)











联系我们

QQ:274381

电 话:15952766660

微信:15952766660

邮 箱:webmaster@7hl.net

地 址:扬州市广陵区信息产业基地三号楼

用手机扫描二维码关闭
二维码