新2019计划:python学习-函数【5】

2019-02-19  本文已影响0人  克里斯托弗的梦想

函数用法

本篇章,主要介绍函数的几种用法,包括传参数、实参形参、不同参数形式(位置实参、关键字实参、任意数量的实参)、以及return返回值、函数存储在模块的独立文件中等。

函数存储在模块的独立文件中,让主程序文件组织更加有序,并且无需反复编写完成该任务的代码,而只需调用 执行该任务的函数。

def greet_user():
    print("Hello")
def greet_user(username):
    print("Hello " + username)

greet_user('jesse')

在上面函数greet_user()的定义中,变量username是一个形参,在代码greet_user('jesse')中,值'jesse'是一个实参,实参是调用函数时传递给函数的信 18
息。
1、 位置实参
你调用函数时,Python必须将函数调用中的每个实参都关联到函数定义中的一个形参。为此, 最简单的关联方式是基于实参的顺序。这种关联方式被称为位置实参。因此位置实参的顺序很重要,使用位置实参来调用函数时,如果实参的顺序不正确,结果可能出乎意料。

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')

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')

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')
# 和上面的等价
describe_pet('willie')
# 如果描述的不是狗,改变默认值即可
describe_pet(pet_name='harry', animal_type='hamster')
# 或者
describe_pet('harry', 'hamster')
#或者
describe_pet(pet_name='harry', animal_type='hamster') 
# 或者
describe_pet(animal_type='hamster', pet_name='harry')

4、返回值
return一下就行

5、让实参变成可选的
需要让实参变成可选的,这样使用函数的人就只需在必要时才提供额外的信息。可 使用默认值来让实参变成可选的

def get_formatted_name(first_name, middle_name, last_name):
     """返回整洁的姓名"""
    full_name = first_name + ' ' + middle_name + ' ' + last_name 
    return full_name.title()
musician = get_formatted_name('john', 'lee', 'hooker') 
print(musician)
def get_formatted_name(first_name, last_name, middle_name=''):
    if middle_name:
        full_name = first_name + ' ' + middle_name + ' ' + last_name
    else:
        full_name = first_name + ' ' + last_name
    return full_name.title()
musician = get_formatted_name('jimi', 'hendrix')
print(musician)
musician = get_formatted_name('john', 'hooker', 'lee')
print(musician)
# 形参名*toppings中的星号让Python创建一个名为toppings的空元组,
# 并将收到的所有值都封 装到这个元组中
def make_pizza(*toppings): 
    """打印顾客点的所有配料""" 
    print(toppings)
make_pizza('pepperoni')
make_pizza('mushrooms', 'green peppers', 'extra cheese')

def make_pizza(size, *toppings):
    """概述要制作的比萨""" 
    print("\nMaking a " + str(size) + "-inch pizza with the following toppings:")
    for topping in toppings:
        print("- " + topping) 
 make_pizza(16, 'pepperoni')
make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')
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)

函数存储在模块中

image.png

这就是一种导入方法:只需编写一条import语句并在其中指定模块名,就可在程序中使用该 模块中的所有函数。如果你使用这种import语句导入了名为module_name.py的整个模块,就可使 用下面的语法来使用其中任何一个函数:module_name.function_name()

from pizza import make_pizza as mp
mp(16, 'pepperoni')
mp(12, 'mushrooms', 'green peppers', 'extra cheese')
import pizza as p
p.make_pizza(16, 'pepperoni')
p.make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')
from pizza import *
make_pizza(16, 'pepperoni')
make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')
image.png
上一篇 下一篇

猜你喜欢

热点阅读