Python实用技巧与常见问题解决
Python输入函数的区别
在Python 2.x中,input()和raw_input()是两个不同的输入函数:
input():将输入视为Python表达式并尝试评估。raw_input():将所有输入作为字符串处理。
例如,当输入"57 + 3"时:
# Python 2.x 示例
result1 = input("Enter expression: ") # 输入"57 + 3"返回60
result2 = raw_input("Enter string: ") # 输入"57 + 3"返回字符串"57 + 3"
查看系统包路径
使用sys.path可以查看当前Python环境中模块的搜索路径:
import sys
print(sys.path)
升级Python版本
在Windows上直接安装新版本即可替换旧版本。而在CentOS 5中从Python 2.4升级到2.7需要以下步骤:
- 下载Python源码并解压。
- 安装依赖项如zlib和openssl。
- 编译并安装Python。
示例代码:
# CentOS 5 升级示例
import os
os.system("yum install zlib zlib-devel openssl openssl-devel")
安装lxml库
在Windows上安装lxml库可以通过预编译的二进制文件完成:
# 安装lxml示例
pip install lxml-3.7.2-cp27-cp27m-win_amd64.whl
获取Python版本特性信息
访问官方文档了解每个Python版本的新特性:
Python What's New赋值、浅拷贝与深拷贝
对于可变对象,浅拷贝和深拷贝会创建新的内存空间;而对于不可变对象,两者无区别:
from copy import copy, deepcopy
data = [1, 2, 3]
shallow = copy(data) # 浅拷贝
deep = deepcopy(data) # 深拷贝
主流Python实现方式
Python有多种实现方式,包括CPython、Jython、IronPython和PyPy等。
单语句块
如果语句块只有一行代码,可以直接在同一行书写:
if True: print("Hello")
数据库连接错误处理
使用PyMySQL连接数据库时,可能会遇到连接被拒绝或权限不足的问题:
# 修改MySQL配置文件示例
bind_address = "192.168.16.200"
不可变对象与可变对象
不可变对象调用方法不会改变自身内容,而可变对象会:
text = "hello"
new_text = text.upper() # 不改变原对象
numbers = [1, 2, 3]
numbers.sort() # 改变原列表
"__future__"模块
通过__future__模块可以在当前版本中测试未来版本的功能:
from __future__ import division
result = 2 / 3 # 返回浮点数
斐波那契数列实现
使用循环生成斐波那契数列:
def fibonacci(n):
sequence = []
a, b = 0, 1
for _ in range(n):
sequence.append(b)
a, b = b, a + b
return sequence
标准库常用方法
os和sys模块提供了许多实用功能,如文件操作和系统信息查询。