Python 进阶技巧全攻略:从易混淆知识点到高手必备技能
前言
Python 以其简洁优雅的语法著称,但某些特性对新手来说却容易造成困扰。本文将深入探讨这些难点,并提供实用的解决方案和技巧,帮助你从新手快速成长为 Python 高手。
一、理解变量与作用域
1. 全局变量与局部变量
在 Python 中,变量的作用域决定了它在代码中的可见性。
x = 10 # 全局变量
def func():
x = 20 # 局部变量
print(x) # 输出 20
func()
print(x) # 输出 10
2. 修改全局变量
如果想在函数内部修改全局变量,需要使用 global
关键字。
y = 5
def modify_global():
global y
y = 10
print(y) # 输出 10
modify_global()
print(y) # 输出 10
3. 嵌套函数与作用域
在嵌套函数中,变量作用域遵循 LEGB(Local, Enclosing, Global, Built-in)规则。
a = 10
def outer():
a = 20
def inner():
a = 30
print(a) # 输出 30
inner()
print(a) # 输出 20
outer()
print(a) # 输出 10
二、掌握数据类型与结构
1. 列表推导式
列表推导式是一种简洁创建列表的方式。
squares = [x**2 for x in range(10)]
print(squares) # 输出 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
2. 字典推导式
字典推导式用于快速创建字典。
dict_comp = {
x: x*2 for x in range(5)}
print(dict_comp) # 输出 {0: 0, 1: 2, 2: 4, 3: 6, 4: 8}
3. 集合推导式
集合推导式用于创建集合。
set_comp = {
x for x in 'abracadabra' if x not in 'abc'}
print(set_comp) # 输出 {'r', 'd'}
4. 元组的不可变性
元组一旦创建,其内容不能被修改。
t = (1, 2, 3)
# t[0] = 10 # 会报错
三、深入函数编程
1. 默认参数的陷阱
默认参数在函数定义时只被计算一次。
def append_to_list(value, my_list=[]):
my_list.append(value)
return my_list
print(append_to_list(1)) # 输出 [1]
print(append_to_list(2)) # 输出 [1, 2]
为了避免这个问题,可以将默认参数设为 None
。
def append_to_list(value, my_list=None):
if my_list is None:
my_list = []
my_list.append(value)
return my_list
print(append_to_list(1)) # 输出 [1]
print(append_to_list(2)) # 输出 [2]
2. 可变参数与关键字参数
def variable_args(*args, **kwargs):
print(args) # 元组,包含位置参数
print(kwargs) # 字典,包含关键字参数
variable_args(1, 2, 3, a