《Python编程:从入门到实践》第八章-函数

8.4 传递列表

假设有一个用户列表,我们要问候其中的每位用户。下面的示例将一个名字列表传递给名为greet_user() 的函数,这个函数问候列表中的每个人:

def greet_user(names):
    #向列表中的每位用户都发出简单的问候
    for name in names:
        msg = "Hello, " + name.title() + "!"
        print(msg)
        
user_names = ['lihui','xiaowei','zhoujielun']
greet_user(user_names)

8.4.1 在函数中修改列表

#首先创建一个列表,其中包含一些要打印的设计
unprinted_designs = ['iphone case','robot pendant','dodecahedron']
conpleted_models = []

#模拟打印每个设计,直到没有未打印的设计为止
#打印每个设计后,都将其移动到列表completed_models中
while unprinted_designs:
    current_design =unprinted_designs.pop()
    
    #模拟根据设计制作3D打印模型的过程
    print("Printing model: " + current_design)
    conpleted_models.append(current_design)
    
#显示打印好的所有模型
print("\nThe following models have been printed:")
for model in conpleted_models:
    print(model)
优化代码:为重新组织这些代码,我们可编写两个函数,每个都做一件具体的工作。大部分代码都与原来相同,只是效率更高。第一个函数将负责处理打印设计的工作,而第二个将概述打印了哪些设计:

def print_models(unprinted_designs,conpleted_models):
    #模拟打印每个设计,直到没有未打印的设计为止
    #打印每个设计后,都将其移动到列表completed_models中
    while unprinted_designs:
        current_design =unprinted_designs.pop()
    
    #模拟根据设计制作3D打印模型的过程
        print("Printing model: " + current_design)
        conpleted_models.append(current_design)
    
def show_printde_model(conpleted_models):
    #显示打印好的所有模型
    print("\nThe following models have been printed:")
    for model in conpleted_models:
        print(model)

unprinted_designs = ['iphone case','robot pendant','dodecahedron']
conpleted_models = []

print_models(unprinted_designs,conpleted_models)
show_printde_model(conpleted_models)
我们创建了一个未打印的设计列表,还创建了一个空列表,用于存储打印好的模型。接下来,由于我们已经定义了两个函数,因此只需调用它们并传入正确的实参即可。我们调用print_models()并向它传递两个列表;像预期的一样,print_models()模拟打印设计的过程。接下来,我们调用conpleted_models,并将打印好的模型列表传递给它,让其能够指出打印了哪些模型。描述性的函数名让别人阅读这些代码时也能明白,虽然其中没有任何注释。相比于没有使用函数的版本,这个程序更容易扩展和维护。如果以后需要打印其他设计,只需再次调用print_models()即可。如果我们发现需要对打印代码进行修改,只需修改这些代码一次,就能影响所有调用该函数的地方;与必须分别修改程序的多个地方相比,这种修改的效率更高。

8.4.2 禁止函数修改列表



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值