侧边栏壁纸
博主头像
LittleAO的学习小站 博主等级

在知识的沙漠寻找绿洲

  • 累计撰写 125 篇文章
  • 累计创建 27 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Python的函数详解

LittleAO
2023-04-08 / 0 评论 / 0 点赞 / 11 阅读 / 0 字
温馨提示:
本文最后更新于2023-11-13,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

资料来源于Github项目**30-Days-Of-Python,本文为第十一章翻译。**

函数

到目前为止,我们已经看到了许多内置的Python函数。在本节中,我们将专注于自定义函数。什么是函数?在我们开始创建函数之前,让我们学习一下函数是什么以及为什么我们需要它们?

定义函数

函数是可重用的代码块或编程语句,旨在执行某个特定任务。为了定义或声明一个函数,Python提供了def关键字。以下是定义函数的语法。只有在调用或执行函数时才执行函数代码块。

声明和调用函数

当我们创建一个函数时,我们称之为声明一个函数。当我们开始使用它时,我们称之为调用或执行一个函数。函数可以带有参数或不带参数。

# 语法
# 声明函数
def function_name():
    codes
    codes
# 调用函数
function_name()

没有变量的函数

声明函数可以不需要变量。

例如:

def generate_full_name ():
    first_name = 'Asabeneh'
    last_name = 'Yetayeh'
    space = ' '
    full_name = first_name + space + last_name
    print(full_name)
generate_full_name () # 调用函数

def add_two_numbers ():
    num_one = 2
    num_two = 3
    total = num_one + num_two
    print(total)
add_two_numbers()

函数返回值-第1部分

函数也可以返回值,如果函数没有返回语句,函数的值为None。让我们使用return重新编写上面的函数。从现在开始,当我们调用函数并打印它时,我们会从函数中得到一个值。

def generate_full_name ():
    first_name = 'Asabeneh'
    last_name = 'Yetayeh'
    space = ' '
    full_name = first_name + space + last_name
    return full_name
print(generate_full_name())

def add_two_numbers ():
    num_one = 2
    num_two = 3
    total = num_one + num_two
    return total
print(add_two_numbers())

带参数的函数

在函数中,我们可以将不同的数据类型(数字、字符串、布尔值、列表、元组、字典或集合)作为参数传递。

  • 单个参数:如果我们的函数需要一个参数,我们应该使用一个参数来调用我们的函数。
# 语法
# 声明函数
def function_name(parameter):
    codes
    codes
# 调用函数
print(function_name(argument))

示例:

def greetings (name):
    message = name + ', welcome to Python for Everyone!'
    return message

print(greetings('Asabeneh'))

def add_ten(num):
    ten = 10
    return num + ten
print(add_ten(90))

def square_number(x):
    return x * x
print(square_number(2))

def area_of_circle (r):
    PI = 3.14
    area = PI * r ** 2
    return area
print(area_of_circle(10))

def sum_of_numbers(n):
    total = 0
    for i in range(n+1):
        total+=i
    print(total)
print(sum_of_numbers(10)) # 55
print(sum_of_numbers(100)) # 5050

  • 双参数:一个函数可能有参数,也可能没有参数。一个函数也可能有两个或更多的参数。如果我们的函数需要参数,我们应该使用参数来调用它。让我们来看一个有两个参数的函数:
# 语法
# 声明函数
def function_name(para1, para2):
    codes
    codes
# 调用函数
print(function_name(arg1, arg2))

示例:

def generate_full_name (first_name, last_name):
    space = ' '
      full_name = first_name + space + last_name
      return full_name
print('Full Name: ', generate_full_name('Asabeneh','Yetayeh'))

def sum_two_numbers (num_one, num_two):
    sum = num_one + num_two
    return sum
print('Sum of two numbers: ', sum_two_numbers(1, 9))

def calculate_age (current_year, birth_year):
    age = current_year - birth_year
    return age;

print('Age: ', calculate_age(2021, 1819))

def weight_of_object (mass, gravity):
    weight = str(mass * gravity)+ ' N' # the value has to be changed to a string first
    return weight
print('Weight of an object in Newtons: ', weight_of_object(100, 9.81))

使用关键字和值传递参数

如果我们使用关键字和值传递参数,参数的顺序就不重要了。

# 语法
# 声明函数
def function_name(para1, para2):
    codes
    codes
# 调用函数
print(function_name(para1 = 'John', para2 = 'Doe')) # 调用参数的顺序并不重要

示例:

def print_fullname(firstname, lastname):
    space = ' '
    full_name = firstname  + space + lastname
    print(full_name)
print(print_fullname(firstname = 'Asabeneh', lastname = 'Yetayeh'))

def add_two_numbers (num1, num2):
    total = num1 + num2
    print(total)
print(add_two_numbers(num2 = 3, num1 = 2)) # 调用参数的顺序并不重要

函数返回值-第2部分

如果我们在函数中没有返回值,则我们的函数默认返回None。要从函数中返回一个值,我们使用关键字return,后面跟着我们要返回的变量。我们可以从函数中返回任何类型的数据。

  • 返回一个字符串的例子:
def print_name(firstname):
    return firstname
print_name('Asabeneh') # Asabeneh

def print_full_name(firstname, lastname):
    space = ' '
    full_name = firstname  + space + lastname
    return full_name
print_full_name(firstname='Asabeneh', lastname='Yetayeh')

  • 返回一个数字:
def add_two_numbers (num1, num2):
    total = num1 + num2
    return total
print(add_two_numbers(2, 3))

def calculate_age (current_year, birth_year):
    age = current_year - birth_year
    return age;
print('Age: ', calculate_age(2019, 1819))

  • 返回一个布尔值:
def is_even (n):
    if n % 2 == 0:
        print('even')
        return True    # return stops further execution of the function, similar to break 
    return False
print(is_even(10)) # True
print(is_even(7)) # False

  • 返回一个列表:
def find_even_numbers(n):
    evens = []
    for i in range(n + 1):
        if i % 2 == 0:
            evens.append(i)
    return evens
print(find_even_numbers(10))

默认参数的函数

有时我们在调用函数时会传递默认值到参数中。如果我们在调用函数时没有传递参数,那么它们的默认值将被使用。

# 语法
# 声明函数
def function_name(param = value):
    codes
    codes
# 调用函数
function_name()
function_name(arg)

示例:

def greetings (name = 'Peter'):
    message = name + ', welcome to Python for Everyone!'
    return message
print(greetings())
print(greetings('Asabeneh'))

def generate_full_name (first_name = 'Asabeneh', last_name = 'Yetayeh'):
    space = ' '
    full_name = first_name + space + last_name
    return full_name

print(generate_full_name())
print(generate_full_name('David','Smith'))

def calculate_age (birth_year,current_year = 2021):
    age = current_year - birth_year
    return age;
print('Age: ', calculate_age(1821))

def weight_of_object (mass, gravity = 9.81):
    weight = str(mass * gravity)+ ' N' # the value has to be changed to string first
    return weight
print('Weight of an object in Newtons: ', weight_of_object(100)) # 9.81 - average gravity on Earth's surface
print('Weight of an object in Newtons: ', weight_of_object(100, 1.62)) # gravity on the surface of the Moon

任意数量的参数

如果我们不知道要传递给函数的参数数量,我们可以创建一个函数,通过在参数名前添加 * 号,可以接受任意数量的参数。

# 语法
# 声明函数
def function_name(*args):
    codes
    codes
# 调用函数
function_name(param1, param2, param3,..)

示例:

def sum_all_nums(*nums):
    total = 0
    for num in nums:
        total += num     # same as total = total + num 
    return total
print(sum_all_nums(2, 3, 5)) # 10

函数中的默认和任意数量的参数

def generate_groups (team,*args):
    print(team)
    for i in args:
        print(i)
print(generate_groups('Team-1','Asabeneh','Brook','David','Eyob'))

函数作为另一个函数的参数

# 你可以将函数作为另一个函数的参数
def square_number (n):
    return n * n
def do_something(f, x):
    return f(x)
print(do_something(square_number, 3)) # 27

0

评论区