python中函数的基本用法

131 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第22天,点击查看活动详情

1.定义函数

下面是一个打印问候语的简单函数:

image.png

def user():
    print("hello")
user()

本例演示了最简单的函数结构。使用def来告诉python。你要定义一个函数。这是函数定义,向python指出了函数名,还可能在圆括号内指出函数为完成任务需要什么样的条件。在这里函数名为user(),它不需要任何信息就能完成工作,因此括号是空的。 定义以冒号结尾,后面的所有缩进行构成了函数体。

1.1向函数传递信息

只需稍作修改,就可让user()不仅向用户展示hello,还能将用户的名字作为抬头。:

image.png

name=input("请输入名字:")
def user(a):
    print(f"hello {a.title()}")
user(name)

这里是输入一个名字将其赋给name,然后再使用user()来调用这个名字。

1.2实参和形参

前面定义函数user()时,要求给变量name指定一个指。调用这个函数并提供这种信息(人名)时,它将打印相应的问候语。 在函数user(0的定义中,变量a是一个形式参数,即函数完成工作所需要的信息。在user(name)中,name变量是一个实参,即调用时传递给函数的信息。调用函数时,将要让函数使用的信息放在圆括号内。在user(name)中,将实参name传递给了函数user(),这个值赋给了形参a.

2.传递实参

函数定义中可能包含多个形参,因此函数电泳中也可能包含多个实参。向函数传递实参的方式很多:可使用位置实参,这要求实参的顺序与形参的顺序相同;也可使用关键字实参,其中每个实参都由变量名和值组成;还可使用列表和字典。

2.1位置实参

调用函数时,python必须将函数调用中的每个实参都关联到函数定义中的一个形参。为此,最简单的关联方式是基于实参的顺序。这种关联方式称为位置实参。

image.png

name=input("请输入名字:")
where=input("请输入地址:")
def user(a):
    print(f"hello {a.title()}")
def live(b):
    print(f"地址登记成功,您的地址是:{b.title()}")
user(name)
live(where)

这两个函数的定义,一个需要名字一个需要地址。同样的也可以将两个集中到一个定义中去如:

image.png

name=input("请输入名字:")
where=input("请输入地址:")
def user(a,b):
    print(f"hello {a.title()}")
    print(f"地址登记成功,您的地址是:{b.title()}")
user(name,where)

这两种代码所达到的目的是一致的,但为了简洁建议第二种方式。但是需要注意位置,第一个形参和第二形参就要对应第一个实参和第二个实参。

2.2关键字实参

关键字实参是传递给函数的名称值对。因为直接在实参中将名称和值关联起来,所以向函数传递实参时不会混淆。关键值实参让你无须考虑函数调用中的实参顺序,还清楚地指出了函数调用中各个值的用途。如:

image.png

name=input("请输入名字:")
where=input("请输入地址:")
def user(a,b):
    print(f"hello {a.title()}")
    print(f"地址登记成功,您的地址是:{b.title()}")
user(a=name,b=where)

image.png

name=input("请输入名字:")
where=input("请输入地址:")
def user(a,b):
    print(f"hello {a.title()}")
    print(f"地址登记成功,您的地址是:{b.title()}")
user(b=where,a=name)

这两处的不同之处在于:

user(a=name,b=where) user(b=where,a=name)

但他们又是相同的,这就是关键值实参,不用考虑顺序。

2.3默认值

编写函数时,可给每个形参指定默认值。在调用函数中给形参提供了实参时,python将使用指定的实参值;否则,将使用形参的默认值。因此,给形参指定默认值之后,可在函数调用中省略相应的实参。使用默认值可简化函数调用,还可清楚地指出函数的典型用法。如:

image.png

name=input("请输入名字:")
where=input("请输入地址:")
def user(a,b='菜市场'):
    print(f"hello {a.title()}")
    print(f"地址登记成功,您的地址是:{b.title()}")
user(a=name)

这里将b这个形参设置为默认值’菜市场‘,user()不对b进行传递,只对a这个形参进行传递,当形参b接收不到传递时,就会使用默认值。

注意一点:使用默认值时,必须先在形参列表中列出没有默认值的形参,再列出有默认值的实参。这让python和其他人依然能够正确的解读位置实参。