0%

Mosh的Python课程笔记(4)--Functions

Mosh的课程网址

Arguments

1
2
3
4
5
6
7
def greet(first_name, last_name):
print(f"Hi {first_name} {last_name}")
print("Welcome aboard")


greet("Stone", "Purple")
greet("Stephen", "Curry")

Types of Functions

1
2
👉 1 - Perform a task
👉 2 - Return a value
1
2
3
4
5
6
7
8
9
10
11
12
13
def greet(name):
""" Type 1 function """
print(f"Hi {name}")


def get_greeting(name):
""" Type 2 function """
return f"Hi {name}"


message = get_greeting("Stone")
file = open("content.txt", "w")
file.write(message)

python return None by default.

1
print(greet("Stone"))

输出结果:

1
None

Types of Arguments

Keyword Arguments

1
2
3
4
5
6
def increment(number, by):
return number + by


# more readable: by=...
print(increment(2, by=1))

Default Arguments

1
2
3
4
5
def increment(number, by=1):
return number + by


print(increment(2))

所有 optional arguments 应该在无 default value 的 argument 后面

*args

输入参数数量可变(存成一个tuple,且iterable)

1
2
3
4
5
6
7
8
9
def multiply(*numbers):
total = 1
for number in numbers:
total *= number
return total


print(multiply(2, 3, 4, 5))
print(multiply(4, 5, 6, 2, 5))

输出

1
2
120
1200

**args

打包 keyword arguments 成 dict 给函数体调用

1
2
3
4
5
6
def save_user(**user):
print(user)
print(user["name"])


save_user(id=1, name="John", age=22)

输出:

1
2
{'id': 1, 'name': 'John', 'age': 22}
John

Scope

局部变量局部可见

全局变量全局可见

1
2
3
4
5
6
7
8
9
message = "a"


def greet(name):
message = "b"


greet("Stone")
print(message)

输出结果:

1
a

因为 Python 将 greet 函数内的 message 视为 local variable,尽管它与全局变量同名。

Debugging

1
2
3
4
5
👉 F9 			-- 设置断点
👉 F5 -- 开始调试
👉 F10 -- 下一步
👉 F11 -- 进入 function 内单步 debug
👉 Shift+F11 -- 退出 function 内单步 debug

VSCode Tricks (Windows)

1
2
3
4
5
6
7
8
👉 Home 		光标移到行首
👉 End 光标移到行尾
👉 Ctrl+Home 光标移到文件头
👉 Ctrl+End 光标移到文件尾
👉 Ctrl+L 选择当前行
👉 Alt+↑or↓ 代码上移或下移
👉 Shift+Alt+↓ 选中某(几)行后用此组合键复制粘贴
👉 Ctrl+/ 多行注释