关键词

Python 函数

Python 包含许多内置函数。这些函数执行预定义的任务,并且可以根据需要在任何程序中调用。但是,如果您没有找到合适的内置函数来满足您的目的,您可以定义一个。我们现在将看到如何在 Python 程序中定义和使用函数。

定义函数

函数是一个可重用的编程语句块,用于执行特定的任务。为了定义一个函数,Python 提供了def关键字。以下是定义函数的语法。

Syntax:

def function_name(parameters):
    """docstring"""
    statement1
    statement2
    ...
    ...
    return [expr]

关键字def后面跟一个合适的标识符作为函数的名称和括号。一个或多个参数可以任选地在括号内提及。括号后的:符号开始缩进块。

函数体中的第一个语句可以是字符串,称为docstring。它解释了函数/类的功能。 文档字符串不是强制性的。

函数体包含一个或多个执行某些操作的语句。也可以使用传递关键字。

可选地,函数块中的最后一条语句是 return 语句。它将执行控制发送回调用环境。如果在返回之前添加了一个表达式,它的值也会返回到调用代码中。

以下示例定义了greet()函数。

Example: User-defined Function

def greet():
    """This function displays 'Hello World!'"""
    print('Hello World!') 

以上,我们已经定义了greet()函数。第一个语句是一个 docstring,它提到了这个函数的功能。第二种类似的方法是打印方法,将指定的字符串显示到控制台。 注意没有退货单。

要调用一个已定义的函数,只需在代码中的任何地方使用它的名称作为语句。例如,上面的函数可以用括号greet()来调用。

Example: Calling User-defined Function

greet() 

Output

Hello World! 

默认情况下,如果返回语句不存在,所有函数都会返回None

Example: Calling User-defined Function

val = greet() 
print(val)

Output

None 

帮助()功能显示文档字符串,如下图所示。

Example: Calling User-defined Function

>>> help(greet)
Help on function greet in module __main__:

    greet()
        This function displays 'Hello World!'

功能参数

可以定义一个函数来接收一个或多个参数(也称为参数),并在功能块内使用它们进行处理。参数/自变量可以被赋予合适的正式名称。greet()函数现在被定义为接收名为name的字符串参数。在该功能中,print()语句被修改以显示发送给接收参数的问候信息。

Example: Parameterized Function

def greet(name):  
    print ('Hello ', name)

greet('Steve') # calling function with argument
greet(123) 

Output

Hello Steve
Hello 123 

函数定义中使用的参数名称为形式参数。调用函数时实际使用的对象称为实际参数。

使用parameter:type语法,函数参数可以有注释来指定参数的类型。例如,以下注释了参数类型字符串。

Example: Parameterized Function

def greet(name:str):  
    print ('Hello ', name)

greet('Steve') # calling function with string argument
greet(123) # raise an error for int argument 

多个参数

一个函数可以有多个参数。下面的函数接受三个参数。

Example: Parameterized Function

def greet(name1, name2, name3):  
    print ('Hello ', name1, ' , ', name2 , ', and ', name3)

greet('Steve', 'Bill', 'Yash') # calling function with string argument 

Output

Hello Steve, Bill, and Yash 

未知的参数数量

如果您不知道用户将要传递的参数数量,Python 中的函数可以通过将*放在参数之前来获得未知数量的参数。

Example: Parameterized Function

def greet(*names):  
    print ('Hello ', names[0], ', ', names[1], ', ', names[3])

greet('Steve', 'Bill', 'Yash') 

Output

Hello Steve, Bill, and Yash 

下面的函数可以处理任意数量的参数。

Example: Parameterized Function

def greet(*names):
    i=0
    print('Hello ', end='')
    while len(names) > i:
        print(names[i], end=', ')
        i+=1

greet('Steve', 'Bill', 'Yash') 
greet('Steve', 'Bill', 'Yash', 'Kapil', 'John', 'Amir') 

Output

Hello Steve, Bill, Yash,
Hello Steve, Bill, Yash, Kapil, John, Amir 

带有关键字参数的函数

为了调用带有参数的函数,必须提供相同数量的实际参数。但是,可以通过以任何顺序使用参数名传递参数值来调用函数。例如,下面使用参数名传递值。

def greet(firstname, lastname):
    print ('Hello', firstname, lastname)

greet(lastname='Jobs', firstname='Steve') # passing parameters in any order using keyword argument 

Output

Hello Steve Jobs 

关键字参数**kwarg

该函数可以有一个前缀为**的参数。这种类型的参数初始化为新的有序映射,接收任何多余的关键字参数,默认为相同类型的新空映射。

Example: Parameterized Function

def greet(**person):
    print('Hello ', person['firstname'],  person['lastname'])

greet(firstname='Steve', lastname='Jobs')
greet(lastname='Jobs', firstname='Steve')
greet(firstname='Bill', lastname='Gates', age=55) 
greet(firstname='Bill') # raises KeyError 

Output

Hello Steve Jobs
Hello Steve Jobs
Hello Bill Gates 

使用**参数时,参数的顺序无关紧要。但是,参数的名称必须相同。 使用paramter_name['keyword_argument']访问关键字参数的值。

如果函数访问关键字参数,但是调用代码没有传递该关键字参数,那么它将引发KeyError异常,如下所示。

Example: Parameterized Function

def greet(**person):
    print('Hello ', person['firstname'],  person['lastname'])

greet(firstname='Bill') # raises KeyError, must provide 'lastname' arguement 

Output

Traceback (most recent call last):
  File "<pyshell#21>", line 1, in <module>
    greet(firstname='Bill')
  File "<pyshell#19>", line 2, in greet
    print('Hello ', person['firstname'],  person['lastname'])
KeyError: 'lastname' 

带默认值的参数

定义函数时,可以为其参数指定默认值。如果在调用函数时传递了适当的实际参数,则该默认值将被替换。但是,如果没有提供实际参数,将在函数内部使用默认值。

下面的greet()函数是用具有默认值'Guest'name参数定义的。 只有通过一些实际的参数,才会被替换。

Example: Parameter with Default Value

def greet(name = 'Guest'):
    print ('Hello', name)

greet()
greet('Steve') 

Output

Hello Guest
Hello Steve 

带返回值的函数

大多数时候,我们需要函数的结果用于进一步的处理。因此,当函数返回时,它也应该返回值。

用户定义的函数也可以通过在 return 语句前放置一个表达式来向调用环境返回值。在这种情况下,返回值必须赋给某个变量。

Example: Return Value

def sum(a, b): 
    return a + b 

可以调用上面的函数并提供值,如下所示。

Example: Parameter with Default Value

total=sum(10, 20) 
print(total)
total=sum(5, sum(10, 20))
print(total) 

Output

30
35 

本文链接:http://task.lmcjl.com/news/1108.html

展开阅读全文