python 函数

函数是带名字的代码块,用于完成具体的工作。
使用关键字def来告诉python你要定义一个函数。然后在def后面指出函数名,函数名后紧跟着括号,括号里面还可能存在参数,或者空的。最后,定义以冒号结尾

定义简单的函数,不提供任何参数

def greeting():  #  定义了一个简单的函数greeting,它不需要任何信息就能完成工作,这个函数的功能是打印问候语
    """显示简单的问候"""
    print("Hello!")  #  这个为函数的代码块
greetings()  # 使用函数名来调用函数,函数调用让python执行函数的代码
#输出结果为
Hello!

向函数传递参数:形参和实参

"""定义函数greetings时,给函数的括号内添加了一个形参username,通过在这里添加username,就可让函数接受你给username的任何值"""
def greetings(username):
    """显示简单的问候,并加上用户的名字"""
    print("Good morning! " + username.title() + ".")
"""调用函数greetings,并给形参username指定一个值为lee,这里的lee可以称为实参,"""
greetings("lee")
# 输出结果为:
Good morning! Lee.

在上面的函数greetings()定义中,变量username是一个形参形参是函数完成工作所需的一项信息。在greetings(“lee”)中,值"lee"是一个实参实参是调用函数时传递给函数的信息,我们调用函数时,将要让函数使用的信息放在括号内。在greetings(“lee”)中,将实参"lee"传递给了函数greetings(),这个值被存储在形参username中。

传递实参方式:位置实参和关键字实参

在调用函数时,Python必须将函数调用中的每个实参都关联到函数定义中的形参,向python传递实参的方式很多,可使用位置实参,这要求实参的顺序与形参的顺序相同;也可使用关键字实参,这要求每个实参都由变量名和值组成。

"""定义了一个函数user_name(),函数完成工作时需要两个形参,如用户的first_name,和last_name"""
def user_name(first_name, last_name):
    fullname = first_name + last_name
    print("Welcome to our newly-registered user " + fullname.title() + ".")
 
 """使用位置实参调用了函数user_name,实参“xian”将存储在形成first_name中,而实参"lee"将存储在形参last_name中""" 
user_name("xian", "lee")

"""使用关键字实参调用函数时,需同时指出形参和与之相关联的实参值,因此你无需考虑函数调用中的实参顺序,还清楚的指出了函数调用用各个值的用途"""
user_name(last_name="lee", first_name="xian")

# 输出结果为:
Welcome to our newly-registered user Xianlee.
Welcome to our newly-registered user Xianlee.

默认值

在编写函数时,可以给函数中的每个形参提供一个默认值。当你调用函数时给形参提供了实参值,python将使用你提供的实参;若调用函数中没有提供实参值,pyhon将使用形参的默认值

"""在定义函数user_name时,因为考虑到李是一个大的姓氏,因此设置last_name的默认值为"lee",调用函数时,若没有给last_name指定值,python将把这个形参设置为lee. """
def user_name(first_name, last_name="lee"):
    fullname = first_name + last_name
    print("Welcome to our newly-registered user " + fullname.title() + ".")

"""没有提供last_name的实参,因此python让使用last_name的默认值lee """
user_name("xian")
# 输出结果为:
Welcome to our newly-registered user Xianlee.

返回值和让实参变成可选

函数除了可以直接显示输出外,还可以处理一些数据,并返回一个或一组值,函数返回的值被称为返回值。在函数中,可使用return语句将值返回到调用函数的代码行。

"""定义一个函数,需提供名,中间名和姓,然而并非所有的人都有中间名,但如果你调用了这个函数时只提供了名和姓,它将不能正确的运行,为了让中间名变成可选,可给实参middle_name提供一个默认值-空字符串,并在用户不提供中间名时不使用这个实参"""
def user_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()  # 将full_name的值转换为首字母大写格式,并将结果返回到函数调用行

Registered_name = ("Here is the newly-registered user_name : " + user_name("bao", "chen"))  # 没有提供middle_name的值,因此python在调用这个函数时不使用middle_name的实参
print(Registered_name)  

Registered_name = ("Here is the newly-registered user_name : " + user_name("bao", "chen", "lian"))
print(Registered_name)   # 提供了middle_name的值,因此python在调用这个函数时使用middle_name的实参

# 输出结果为:
Here is the newly-registered user_name : Bao  Chen
Here is the newly-registered user_name : Baolian Chen

通过用户输入给函数提供实参

def user_name(first_name, middle_name, last_name):
    full_name = first_name + middle_name + " " + last_name
    return full_name.title() # 返回值给调用函数的代码块使用

while True:  # 让循环一开始处于激活状态,当遇到break时,循环就结束
    print("\nplease tell us your name.")
    print("enter 'quit' at any time you would like to end the program") # 给用户提示,若想退出循环,输入quit
    f_name = input("what is your first name? ")
    if f_name == "quit":  # 遇到quit时,就结束循环
        break
    question = input("Do you have middle name? (yes/no)")
    if question == "quit":
        break
    if question == "yes":
        m_name = input("what is your middle name? ")
        if m_name == "quit":
            break
    else:
        m_name = " "
    l_name = input("what is your last name? ")
    if l_name == "quit":
        break
    Registered_name = ("Here is the newly-registered user_name : " + user_name(f_name, m_name, l_name))  # 调用函数user_name()从而使用函数的返回值full_name.title(),即是用户输入全名的首写字母大写
    print(Registered_name)

#输出结果为:
please tell us your name.
enter 'quit' at any time you would like to end the program
what is your first name? **hong**
Do you have middle name? (yes/no)**yes**
what is your middle name? **zhen**
what is your last name? **liang**
Here is the newly-registered user_name : Hongzhen Liang

please tell us your name.
enter 'quit' at any time you would like to end the program
what is your first name? **liang**
Do you have middle name? (yes/no)**no**
what is your last name? **zhao**
Here is the newly-registered user_name : Liang  Zhao

please tell us your name.
enter 'quit' at any time you would like to end the program
what is your first name? **quit**

Process finished with exit code 0
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值