【笔记2021-10-29】函数 Python

【笔记2021-10-29】函数 Python,第1张

【笔记2021-10-29】函数 Python

  • 8.1 简单函数,名为greet_user()
  • 8.2 传递实参
  • 8.2.2 关键字实参
  • 8.2.3 默认值
  • 8.5 传递任意数量的实参
  • 8.5.2 使用任意数量的关键字实参
  • 8.6 将函数存储在模块中
  • 8.6.1 导入整个模块

8.1 简单函数,名为greet_user()
def greet_user():
    """显示简单的问候语"""
    print("Hello!")
greet_user()

显示结果:

Hello!
8.2 传递实参
def describe_pet(animal_type, pet_name):
    """显示宠物的信息"""
    print("nI have a " + animal_type + ".")
    print("My " + animal_type + "'s name is " + pet_name.title() + ".")
describe_pet('hamster', 'harry')

结果:

I have a hamster.
My hamster's name is Harry.
8.2.2 关键字实参
def describe_pet(animal_type, pet_name):
    """显示宠物的信息"""
    print("nI have a " + animal_type + ".")
    print("My " + animal_type + "'s name is " + pet_name.title() + ".")
describe_pet(animal_type='hamster', pet_name='harry')
describe_pet(pet_name='harry', animal_type='hamster')
I have a hamster.
My hamster's name is Harry.

I have a hamster.
My hamster's name is Harry.

函数describe_pet() 还是原来那样,但调用这个函数时,我们向Python明确地指出了各个实参对应的形参。看到这个函数调用时,Python知道应该将实参’hamster’ 和’harry’ 分别存储在形参animal_type 和pet_name 中。
关键字实参的顺序无关紧要,因为Python知道各个值该存储到哪个形参中。

8.2.3 默认值

编写函数时,可给每个形参指定默认值

def describe_pet(pet_name, animal_type='dog'):
    """显示宠物的信息"""
    print("nI have a " + animal_type + ".")
    print("My " + animal_type + "'s name is " + pet_name.title() + ".")
describe_pet(pet_name='willie')
I have a dog.
My dog's name is Willie.
8.5 传递任意数量的实参

有时候,你预先不知道函数需要接受多少个实参,好在Python允许函数从调用语句中收集任意数量的实参。 例如,来看一个制作比萨的函数,它需要接受很多配料,但你无法预先确定顾客要多少种配料。下面的函数只有一个形参*toppings ,但不管调用语句提供了多少实参,这个 形参都将它们统统收入囊中:

def make_pizza(*toppings):
    """打印顾客点的所有配料"""
    print(type(toppings))
    print(toppings)
make_pizza('pepperoni')
make_pizza('mushrooms', 'green peppers', 'extra cheese')

('pepperoni',)

('mushrooms', 'green peppers', 'extra cheese')

形参名*toppings 中的星号让Python创建一个名为toppings 的空元组,并将收到的所有值都封装到这个元组中。注意,Python将实参封装到一个元组中,即便函数只收到一个值也如此
现在,我们可以将这条print 语句替换为一个循环,对配料列表进行遍历,并对顾客点的比萨进行描述

def make_pizza(*toppings):
    """概述要制作的比萨"""
    print("nMaking a pizza with the following toppings:")
    for topping in toppings:
        print(type(topping))
        print("- " + topping)
make_pizza('mushrooms', 'green peppers', 'extra cheese')
Making a pizza with the following toppings:

- mushrooms

- green peppers

- extra cheese

这样就可以从元组中提取出来字符串

8.5.2 使用任意数量的关键字实参
def build_profile(first, last, **user_info):
    """创建一个字典,其中包含我们知道的有关用户的一切"""
    profile = {}
    profile['first_name'] = first
    profile['last_name'] = last
    for key, value in user_info.items(): 
        profile[key] = value
    return profile

user_profile = build_profile('albert', 'einstein', location='princeton', field='physics')
print(user_profile)
{'first_name': 'albert', 'last_name': 'einstein', 'location': 'princeton', 'field': 'physics'}
8.6 将函数存储在模块

函数的优点之一是,使用它们可将代码块与主程序分离。
还可以更进一步,将函数存储在被称为模块的独立文件中, 再将模块导入导到主程序中。import 语句允许在当前运行的程序文件中使用模块中的代码。 通过将函数存储在独立的文件中,可隐藏程序代码的细节,将重点放在程序的高层逻辑上。
这还能让你在众多不同的程序中重用函数。将函数存储在独立文件中后,可与其他程 序员共享这些文件而不是整个程序。知道如何导入函数还能让你使用其他程序员编写的函数库。 导入模块的方法有多种,下面对每种都作简要的介绍。

8.6.1 导入整个模块

模块是扩展名为.py的文件,包含要导入到程序中的代码。下面来创建一个包含函数make_pizza() 的模块。为此,我们将文件pizza.py中 除函数make_pizza() 之外的其他代码都删除:

pizza.py
def make_pizza(size, *toppings): 
	"""概述要制作的比萨""" 
	print("nMaking a " + str(size) + "-inch pizza with the following toppings:") 
	for topping in toppings:
		print("- " + topping)
-------------------------------------------------------------------		
making_pizzas.py
import pizza
pizza.make_pizza(16, 'pepperoni') 
pizza.make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4827712.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-10
下一篇 2022-11-10

发表评论

登录后才能评论

评论列表(0条)

保存