Python之函数

    xiaoxiao2021-03-25  64

    函数是带名字的代码块,用于完成具体的工作。通过使用函数,程序编写、阅读、测试和修复都将更容易。

    一个简单的函数

    使用关键字def来告诉Python你要定义一个函数。这是函数定义,向Python指出了函数名,还可能在括号内指出函数为完成其任务需要什么样的信息。 例如:

    def hello_Python(): #第一个Python函数 print("Hello Python!") hello_Python()

    输出结果:

    传递实参

    鉴于函数定义可能包含多个形参,因此函数调用中也可能包含多个实参。向函数传递实参的方式很多,可使用位置实参;也可使用关键字实参。

    位置实参

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

    def describe_pet(animal_type,pet_name): print("我有一只"+animal_type+'.') print("它的名字叫"+pet_name) describe_pet('dog','mikey')

    输出结果:

    关键字实参

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

    def describe_pet(animal_type,pet_name): print("我有一只"+animal_type+'.') print("它的名字叫"+pet_name) describe_pet(animal_type = 'dog',pet_name = 'mikey')

    输出结果:

    默认值

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

    def describe_pet(animal_type = 'dog',pet_name ='mikey'): print("我有一只"+animal_type+'.') print("它的名字叫"+pet_name) describe_pet()

    运行结果:

    注意;使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的形参。这让Python依然能够正确地解读位置实参。

    返回值

    函数并非总是直接显示输出,相反,他可以处理一些数据,并返回一个或一组值。函数返回的值被称为返回值。在函数中,可使用return语句将值返回到带哦用函数的代码行。返回值让你能够将程序的大部分繁重工作移到函数中去完成,从而简化主程序。 例如:

    def get_name(first_name,last_name): full_name = first_name + last_name return full_name.title() musician = get_name ('苏',"林东") print(musician)

    执行结果:

    返回字典

    函数可返回任何类型的值,包括列表和字典等较复杂的数据结构。例如,下面返回一个表示人的字典: person.py

    def get_name(first_name,last_name): person = {'first':first_name,'last':last_name} return person musician = get_name ('苏',"林东") print(musician)

    执行结果:

    传递列表

    你经常会发现,向函数传递列表很有用,这种列表包含的可能是名字、数字或更复杂的对象(如字典)。将列表传递给函数后,函数就能直接访问其内容。 例如:

    def get_name(names): for name in names: print("Hello,"+name.title()) usernames = ['jack','sucak','jenay'] get_name(usernames)

    输出结果:

    传递任意数量的实参

    有时候,你预先不知道函数需要多少个实参,好在Python允许函数从调用语句中收集任意数量的实参。

    例如,来看一个披萨的制作函数,他需要接受很多配料,但你无法预先确定顾客需要多少种配料。 pizza.py

    def make_pizza(*toppings): #打印顾客所点的配料 print(toppings) make_pizza("火腿") make_pizza("鸡蛋","蘑菇","芝士")

    输出结果:

    将函数存储在模块中

    函数的优点之一是,使用它们可将代码块与主程序分离。通过给函数指定描述性名称,可让主程序容易理解得多。你还可以更进一步,将函数存储在被称为模块的独立文件中,再将模块导入到主程序中。Import语句允许在当前的程序文件中使用模块代码。

    导入整个模块

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

    def make_pizza(size,*toppings): #打印顾客所点的尺寸、配料 print("\n制作一个"+str(size)+"存的披萨所需要的材料:") for topping in toppings: print("-"+topping)

    接下来,我们在pizza.py所在的目录中创建另外一个making_pizzas.py的文件,这个文件导入刚创建的模块,在调用make_pizza()两次:

    making_pizzas.py

    import pizza pizza.make_pizza(16,"火腿") pizza.make_pizza(14,"鸡蛋","蘑菇","芝士")

    输出结果:

    导入特定地函数

    你还可以导入模块中特定地函数,例如

    from pizza import make_pizza make_pizza(16,"火腿") make_pizza(14,"鸡蛋","蘑菇","芝士")

    输出结果同上

    使用as给函数指定别名 如果要导入的函数名称可能与程序中现有的名称冲突,或者函数名称太长,可指定简短而独一无二的别名——函数的另一个名称,类似于外号。要给函数指定这种特殊外号,需要在导入它时这样做。 例如:

    from pizza import make_pizza as mp mp(16,"火腿") mp(14,"鸡蛋","蘑菇","芝士")

    输出结果同上

    注意:你还可以使用as给模块指定别名,使用星号(*)运算符可让Python导入模块中所有的函数。

    转载请注明原文地址: https://ju.6miu.com/read-40427.html

    最新回复(0)