Repository navigation
Expand file tree
/
Copy path06_functions.py
More file actions
117 lines (87 loc) · 4.13 KB
/
Copy path06_functions.py
File metadata and controls
117 lines (87 loc) · 4.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# -*- coding: utf-8 -*-
# --- 第6章:函数 ---
# 函数是一段可重复使用的代码块,它只在被调用时执行。
# 使用函数可以提高代码的模块化、可读性和重用性。
# --- 1. 定义函数 ---
# 使用 def 关键字定义函数,后跟函数名、括号 () 和冒号 :。
# 函数体需要缩进。
def greet():
"""这是一个简单的函数,用于打印问候语。"""
print("Hello, welcome to Python functions!")
# --- 2. 调用函数 ---
# 定义函数后,需要通过函数名和括号来调用它。
greet() # 调用上面定义的 greet 函数
# --- 3. 带参数的函数 ---
# 参数是函数定义中列出的变量,它们在函数被调用时接收传递进来的值。
def greet_name(name):
"""这个函数接受一个名字作为参数,并打印个性化的问候语。"""
print(f"Hello, {name}! Nice to meet you.")
greet_name("Alice") # 调用函数并传递参数 "Alice"
greet_name("Bob") # 调用函数并传递参数 "Bob"
# --- 4. 带默认参数的函数 ---
# 你可以为参数设置默认值。如果调用函数时没有为该参数提供值,则使用默认值。
def greet_city(name, city="New York"):
"""这个函数接受名字和城市,城市有默认值。"""
print(f"Hello, {name} from {city}!")
greet_city("Charlie") # 使用默认城市
greet_city("David", "London") # 提供新的城市
# --- 5. 带有返回值的函数 ---
# 函数可以使用 return 关键字返回一个值。函数执行到 return 语句时会立即结束。
def add_numbers(a, b):
"""这个函数接受两个数字,并返回它们的和。"""
sum_result = a + b
return sum_result
result = add_numbers(5, 3)
print(f"5 + 3 = {result}")
# 函数可以返回多个值(实际上是返回一个元组)
def get_min_max(numbers):
"""返回列表中最小和最大的数字。"""
if not numbers:
return None, None # 如果列表为空,返回两个 None
return min(numbers), max(numbers)
my_numbers = [10, 4, 20, 1, 15]
min_val, max_val = get_min_max(my_numbers)
print(f"列表中最小的值是: {min_val}, 最大的值是: {max_val}")
# --- 6. 任意数量的参数 (*args 和 **kwargs) ---
# *args 用于接收任意数量的位置参数,它们会被打包成一个元组。
# **kwargs 用于接收任意数量的关键字参数,它们会被打包成一个字典。
def print_all_args(*args):
"""打印所有接收到的位置参数。"""
print("位置参数:", args)
def print_all_kwargs(**kwargs):
"""打印所有接收到的关键字参数。"""
print("关键字参数:", kwargs)
def print_all(arg1, *args, **kwargs):
"""一个同时接收位置参数、任意位置参数和任意关键字参数的函数。"""
print("第一个参数:", arg1)
print("其他位置参数:", args)
print("关键字参数:", kwargs)
print_all_args(1, 2, 3, "hello")
print_all_kwargs(name="Eve", age=25, city="Paris")
print_all("first", 4, 5, key1="value1", key2="value2")
# --- 7. 局部变量和全局变量 ---
# 在函数内部定义的变量是局部变量,只能在函数内部访问。
# 在函数外部定义的变量是全局变量,可以在程序的任何地方访问。
global_var = "我是全局变量"
def my_function():
local_var = "我是局部变量"
print(global_var) # 可以访问全局变量
print(local_var) # 可以访问局部变量
my_function()
# print(local_var) # 这行会报错,因为 local_var 是局部变量,在函数外部无法访问
print(global_var) # 可以访问全局变量
# 如果要在函数内部修改全局变量,需要使用 global 关键字 (不推荐频繁使用,容易造成代码混乱)
count = 0
def increment_global_count():
global count
count += 1
print("函数内部修改后的全局计数器:", count)
increment_global_count()
print("函数外部的全局计数器:", count)
# --- 章节总结 ---
# 1. def 关键字定义函数。
# 2. 函数通过 () 调用。
# 3. 参数用于向函数传递数据。
# 4. return 关键字用于从函数返回数据。
# 5. *args 和 **kwargs 用于处理可变数量的参数。
# 6. 理解局部变量和全局变量的作用域。