Python(第四章)基础函数

目录

一、什么是函数

1、定义函数

2、使用默认参数值 

3、使用不定长参数列表

二、函数的分类

1、 根据定义来源分类

1.1 内置函数

1.2 标准库函数 

1.3 用户定义函数

2、根据参数特性分类

2.1 无参函数

2.2 有参函数

2.3 位置参数

2.4 关键字参数

2.5 默认参数

 2.6 可变参数

3、根据返回值分类

3.1 无返回值函数

3.2有返回值函数

4、根据作用域分类

4.1 局部函数

4.2 全局函数


一、什么是函数

函数是一段可重复使用的代码块,用于执行特定任务。函数可以接受输入参数,并可能返回一个或多个结果。它们提高了代码的可读性和可重用性,同时也使程序更易于维护和扩展。

1、定义函数

 定义一个函数
def greet(name):
    """生成一个问候语"""
    return f"Hello, {name}!"

# 调用函数
message = greet("Alice")
print(message)  # 输出: Hello, Alice!
# def 关键字用于声明一个函数。
# greet 是函数的名字。
# name 是函数的参数,当函数被调用时,你可以传递一个值给它。
# return 语句指定了函数的结果。在这个情况下,函数返回一个字符串,该字符串是由固定文本和传入的 name 参数组成。

2、使用默认参数值 

def greet(name, greeting="Hello"): #给greeting一个默认的参数为Hello
    return f"{greeting}, {name}!" #这里使用了拼接

# 调用函数
message = greet("Bob", "Hi")  # Hi, Bob! #这里调用greet函数,重新给参数值
message = greet("Charlie")    # Hello, Charlie!

# 使用关键字参数
message = greet(name="Diana", greeting="Hey")  # Hey, Diana!

3、使用不定长参数列表

# *args 是一种特殊的语法,允许你在函数中接收不定数量的位置参数。当你在函数定义中使用星号(*)前缀一个参数名(如 *args),
    # 你实际上是在告诉Python这个函数可以接受任意数量的非关键字(位置)参数。
    # 这些参数会被Python收集并封装成一个元组(tuple)。这意味着在函数体内部,你可以通过索引或迭代来访问这些参数。
def sum_all(*args):
    total = 0
    for num in args:
        total += num
    return total

# 调用函数
result = sum_all(1, 2, 3, 4, 5)  # result is 15
# sum_all 函数可以接受任意数量的整数作为参数,并返回它们的总和。由于 args 是一个元组,
# 我们可以使用循环遍历其中的每个元素并累加它们。

二、函数的分类

1、 根据定义来源分类

1.1 内置函数

内置函数(Built-in Functions):这些函数由Python语言本身提供,无需导入任何模块即可使用,如 len(), str(), print() 等。
以下是一部分内置函数
# print() - 打印输出到控制台。
print("Hello, world!")

# len() - 返回容器(如列表、元组、字符串)的长度。
length = len("example")

# int(), float(), str() - 类型转换。
num = int("123")
decimal = float("123.45")
text = str(123)

1.2 标准库函数 

标准库函数(Library Functions):这些函数位于Python的标准库中,需要通过导入相应的模块才能使用,如 math.sqrt(), os.listdir() 等。
# 1. os 模块
# os.path.join(): 用于组合路径。
import os
path = os.path.join("folder", "subfolder", "file.txt")
print(path) #输出:folder\subfolder\file.txt
# os.listdir(): 列出指定目录下的所有文件和子目录名。
import os
files = os.listdir(".")
print(files) #输出:['基础函数.py']


# 2. sys 模块
# sys.argv: 获取脚本运行时的命令行参数。
import sys
print(sys.argv)
# 输出: ['D:\\pythonXM\\pythonProject1\\day04\\基础函数.py'],输出文件的路径


# 3. math 模块
# math.sqrt(): 计算平方根。
import math
result = math.sqrt(16)
print(result) #输出:4.0

# math.pi: 圆周率π。
import math
print(math.pi)
# 输出:3.141592653589793


# 4. random 模块
# random.randint(): 生成指定范围内的随机整数。
import random
number = random.randint(1, 10)
print(number)


# 5. datetime 模块
# datetime.now(): 获取当前日期和时间。
from datetime import datetime
now = datetime.now()
print(now)
# 输出:2024-07-23 14:49:19.645480

# datetime.strptime(): 字符串转换为datetime对象。
from datetime import datetime
date_obj = datetime.strptime('Jan 1 2019 2:43PM', '%b %d %Y %I:%M%p')
print(date_obj)
# 输出:2019-01-01 14:43:00


# 6. json 模块
# json.dumps(): 将Python对象编码为JSON字符串。
import json
data = {"name": "John", "age": 30}
json_str = json.dumps(data)
print(json_str)

# json.loads(): 解析JSON字符串,将其转换为Python对象。
import json
data = '{"name": "John", "age": 30}'
python_obj = json.loads(data)
print(data)


# 7. collections 模块
# collections.Counter(): 统计元素出现次数。
from collections import Counter
c = Counter(['a', 'b', 'c', 'a', 'b', 'b'])
print(c)
# 输出:Counter({'b': 3, 'a': 2, 'c': 1})

1.3 用户定义函数

用户定义函数(User-defined Functions):由程序员自己编写的函数,可以在自己的代码中定义和调用。
# 基本语法:
def function_name(parameters):
    # 函数体
    # 可以执行任何合法的Python语句
    return value  # 可选,如果函数需要返回值
关键字 def:所有函数定义都以这个关键字开始。
函数名:遵循Python标识符命名规则,最好具有描述性以便于理解。
圆括号:用于传递参数到函数中。这些参数被称为形参(formal parameters)。
冒号:函数头之后的冒号是必需的,它表示函数体的开始。
缩进:函数体中的代码必须被缩进,通常使用四个空格。
return 语句:用于从函数返回值。如果没有明确的return语句,函数会默认返回None。

2、根据参数特性分类

2.1 无参函数

无参函数:不接受任何参数的函数。这是最简单的函数类型,没有参数列表。
def greet():
    print("Hello!")

greet()  # 调用函数

2.2 有参函数

有参函数:接受一个或多个参数的函数。函数可以接受一个或多个参数作为输入。
def greet_user(name):
    print(f"Hello, {name}!")

greet_user("Alice")  # 调用函数并传入参数

2.3 位置参数

位置参数:按照参数在函数定义中的顺序传递。参数按照在函数定义中的顺序传递。
def calculate_area(length, width):
    return length * width

area = calculate_area(10, 5)  # 长度为10,宽度为5

2.4 关键字参数

关键字参数:通过参数名来传递值,可以改变参数的实际顺序。可以通过参数名传递值,这样即使改变了参数的实际顺序也可以正确地赋值。
def calculate_area(length, width):
    return length * width

area = calculate_area(width=5, length=10)  # 关键字参数调用

2.5 默认参数

默认参数:参数具有默认值,调用时可以省略。参数可以设置默认值,在调用时如果不提供该参数的值,则使用默认值。
def greet_user(name="Guest"):
    print(f"Hello, {name}!")

greet_user()  # 使用默认参数值
greet_user("Alice")  # 覆盖默认参数值

 2.6 可变参数

可变参数:使用 *args 和 **kwargs 接收不定数量的位置参数和关键字参数。使用*args接收任意数量的位置参数,使用**kwargs接收任意数量的关键字参数。
def log_message(*args, **kwargs):
    print("Positional arguments:", args)
    print("Keyword arguments:", kwargs)

log_message("Error", "Warning", level="critical", timestamp="12:00 PM")

3、根据返回值分类

3.1 无返回值函数

无返回值函数:不返回任何值,return 语句可以省略或仅写 return。
def greet():
    print("Hello, world!")

# 调用无返回值的函数
greet()

# 尝试捕获返回值(将会是 None)
result = greet()
print(result)  # 输出: None

3.2有返回值函数

有返回值函数:函数通过 return 语句返回一个或多个值。
def add(a, b):
    return a + b

# 调用有返回值的函数
result = add(5, 3)
print(result)  # 输出: 8

# 甚至可以返回多个值,但这实际上是一个包含多个元素的元组:
def get_name_age():
    return "Alice", 30
# 调用函数并解包返回值
name, age = get_name_age()
print(name)  # 输出: Alice
print(age)   # 输出: 30

4、根据作用域分类

4.1 局部函数

局部函数:定义在一个函数体内的函数,只能在包含它的函数内被调用。
def outer_function():
    def inner_function():  # 定义局部函数
        print("This is an inner function.")

    inner_function()  # 调用局部函数

outer_function()  # 输出: This is an inner function.

4.2 全局函数

全局函数:在模块顶层定义的函数,可以在整个模块中被调用。
def global_function():
    print("This is a global function.")

def another_function():
    global_function()  # 调用全局函数

print(another_function())  # 输出: This is a global function.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值