【Python基础】-03函数
本文最后更新于831 天前,其中的信息可能已经过时,如有错误请发送邮件到linmwo@qq.com

函数

函数是 Python 中重要的编程概念之一,它能够将一段代码逻辑进行封装,使得代码更加模块化、易于复用和维护。本文将详细介绍 Python 中的函数定义、函数调用和函数参数等相关知识点。

1、函数定义

在 Python 中,我们可以使用 def 关键字来定义一个函数,其语法如下:

def function_name(param1, param2, ..., paramN):
    # 函数体
    return value

其中 function_name 表示函数的名称,param1, param2, ..., paramN 是函数的参数列表,可以有多个,也可以为空。函数体中包含了函数的具体实现逻辑,可以是多行语句,用缩进表示代码块。return 语句用于返回函数的结果,可以省略,省略时函数默认返回 None

下面是一个简单的示例:

def add(x, y):
    return x + y

2、函数调用

定义好函数之后,我们可以通过函数名和参数列表来调用函数。例如:

result = add(3, 5)
print(result)  # 输出 8

在调用函数时,将实际参数传递给函数形参。Python 中有两种传参方式:位置参数和关键字参数。位置参数是按照形参的顺序传递参数,而关键字参数则是按照参数名称进行传递。例如:

result = add(y=5, x=3)
print(result)  # 输出 8

3、函数参数

在 Python 中,函数可以定义有参数和没有参数的形式。当我们在函数定义时添加参数时,这些参数也被称为形式参数,简称形参。当我们调用函数时,可以将实际的参数值传递给函数,这些参数值也被称为实际参数,简称实参。

3.1 默认参数

Python 函数可以为参数设置默认值,当调用函数时如果没有传递该参数,则使用默认值。例如:

def add(x, y=1):
    return x + y

print(add(3))       # 输出 4
print(add(3, 5))    # 输出 8

在这个例子中,y 参数设置了默认值 1,所以在第一次调用时只传递了一个参数,而第二次调用时则传递了两个参数。

3.2 位置参数

在 Python 中,我们可以通过位置参数的方式将参数值传递给函数。在定义函数时,我们需要在括号中指定形参的名称,然后在调用函数时,按照位置顺序依次传递实参即可。

def greet(name):
    print("Hello, " + name + "!")

greet("Alice")

上述代码定义了一个名为 greet 的函数,其中包含一个参数 name。在调用函数时,我们将实参 “Alice” 传递给函数。在函数中,我们使用传递进来的参数 name 打印出一句问候语。

3.3 可变参数

在 Python 中,函数可以接受可变数量的参数,这些参数被称为可变参数。在函数定义中,可以使用 *args 表示可变参数。例如:

def add(*args):
    result = 0
    for arg in args:
        result += arg
    return result

print(add(1, 2, 3))         # 输出 6
print(add(1, 2, 3, 4, 5))   # 输出 15

在这个例子中,*args 表示可以接受任意数量的参数,然后将这些参数相加返回结果。

3.4 关键字参数

除了位置参数之外,Python 还支持通过关键字参数的方式将参数值传递给函数。使用关键字参数时,我们需要在调用函数时显式地指定每个参数的名称和对应的值,这样可以避免在函数调用时因为参数的位置发生变化而出现错误。

def greet(name, age):
    print("Hello, " + name + "! You are " + str(age) + " years old.")

greet(age=25, name="Alice")

在上述代码中,我们定义了一个名为 greet 的函数,其中包含两个参数:name 和 age。在调用函数时,我们使用关键字参数的方式来传递参数值。在函数中,我们使用传递进来的参数 name 和 age 打印出一句问候语。

当我们定义了一个函数之后,我们可以通过调用函数来执行其中的代码。在 Python 中,调用函数时,需要在函数名后面加上一对括号,并在括号中输入传递给函数的参数。如果函数没有参数,则括号可以为空。

4、函数返回值

当我们需要在一个函数中返回多个值时,可以使用 Python 中的元组(tuple)类型来实现。

Python 的元组是不可变序列,可以将多个值存储在一个变量中,并且可以通过索引访问元组中的值。

下面的代码演示了如何在函数中返回一个元组:

def get_name_and_age():
    name = input("请输入你的名字:")
    age = int(input("请输入你的年龄:"))
    return name, age

result = get_name_and_age()
print(result)   # 输出 ('Tom', 18)
print(result[0])   # 输出 'Tom'
print(result[1])   # 输出 18

在函数中,我们使用了一个 return 语句来返回一个元组,元组中包含了输入的名字和年龄。在函数调用中,我们将返回值赋值给了一个变量 result,然后可以通过索引访问元组中的值。

值得注意的是,元组可以省略括号,例如在 return 语句中可以写成 return name, age,或者在变量赋值中可以写成 result = get_name_and_age()

5、练习

5.1 【NOIP2012 普及组】 质因数分解

题目描述

已知正整数 $n$ 是两个不同的质数的乘积,试求出两者中较大的那个质数。

输入格式

输入一个正整数 $n$。

输出格式

输出一个正整数 $p$,即较大的那个质数。

样例输入

21

样例输出

7

提示

$1 \le n\le 2\times 10^9$

代码

def Primefactorization(num):
    for i in range(2, num):
        if(num%i==0):
            return n//i
        else:
            continue
n = int(input())
print(Primefactorization(n))

5.2 【深基7.例7】计算阶乘

题目描述

求 $n!$,也就是 $1\times2\times3\dots\times n$。

挑战:尝试不使用循环语句(for、while)完成这个任务。

输入格式

第一行输入一个正整数 $n$。

输出格式

输出一个正整数,表示 $n!$。

样例输入

3

样例输出

6

提示

数据保证,$1 \leq n\le12$。

代码

# 使用递归函数计算阶乘
def Recursivefun(num):
    if num==1:
        return num
    return num*Recursivefun(num-1)

n = int(input())
print(Recursivefun(n))

Views: 0

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇