Python进阶
在 python 用 import 或者 from...import 来导入相应的模块。
将整个模块(somemodule)导入,格式为: import somemodule
从某个模块中导入某个函数,格式为: from somemodule import somefunction
从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc
将某个模块中的全部函数导入,格式为:
__name__属性
一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用name属性来使该程序块仅在该模块自身运行时执行。
#!/usr/bin/python3
# Filename: using_name.py
if __name__ == '__main__':
print('程序自身在运行')
else:
print('我来自另一模块')
dir() 函数
内置的函数 dir() 可以找到模块内定义的所有名称(函数和变量)。以一个字符串列表的形式返回
Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。
Python 推导式是一种强大且简洁的语法,适用于生成列表、字典、集合和生成器。
在使用推导式时,需要注意可读性,尽量保持表达式简洁,以免影响代码的可读性和可维护性。
Python 支持各种数据结构的推导式:
-
列表(list)推导式:
[表达式 for 变量 in 列表 if 条件]
-
names = ['Bob','Tom','alice','Jerry','Wendy','Smith']
new_names = [name.upper() for name in names if len(name)>3]
print(new_names)
['ALICE', 'JERRY', 'WENDY', 'SMITH']
-
-
字典(dict)推导式:
{ key_expr: value_expr for value in collection if condition }
-
listdemo = ['Google','Runoob', 'Taobao']
# 将列表中各字符串值为键,各字符串的长度为值,组成键值对
>>> newdict = {key:len(key) for key in listdemo}
>>> newdict
{'Google': 6, 'Runoob': 6, 'Taobao': 6}
-
-
集合(set)推导式: 同列表
-
元组(tuple)推导式: 元组推导式和列表推导式的用法也完全相同,只是元组推导式是用 () 圆括号将各部分括起来,而列表推导式用的是中括号 []
函数
定义函数
def sum(p1,p2):
return p1*p2
调用函数时可使用的正式参数类型:
-
必需参数
-
必需参数须以正确的顺序和数量传入函数。
-
-
关键字参数
-
函数调用使用关键字参数来确定传入的参数值。使用关键字参数允许函数调用时参数的顺序与声明时不一致
-
def user(name,age):
print(f'姓名:{name},年龄:{age}')
user(age=18,name='tom')
-
-
默认参数
-
调用函数时,如果没有传递参数,则会使用默认参数
-
def user(name,age,gender='male'):
print(f'姓名:{name},年龄:{age},性别:{gender}')
user('tom',15)
-
-
不定长参数
-
加了一个星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数
-
加了两个星号 ** 的参数会以字典的形式导入
-
星号 * 作为参数单独出现时,星号 * 后的参数必须用关键字传入
-
匿名函数lambda
-
lambda 只是一个表达式,函数体比 def 简单很多。
-
lambda 的主体是一个表达式,而不是一个代码块。仅仅能在 lambda 表达式中封装有限的逻辑进去。
-
lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
lambda 语法格式:
lambda arguments: expression
-
lambda
是 Python 的关键字,用于定义 lambda 函数。 -
arguments
是参数列表,可以包含零个或多个参数,但必须在冒号(:
)前指定。 -
expression
是一个表达式,用于计算并返回函数的结果。
sum = lambda arg1, arg2: arg1 + arg2
print ("相加后的值为 : ", sum( 10, 20 ))
文件读写
-
open(filename,mode),打开文件后需要关闭 f.close()
-
filename:文件名
-
mode:r 读,w 写,r+/w+ 读写,a/a+ 读写的追加模式
-
-
with open(filename,mode) as f,自动关闭文件
面向对象
-
构造方法 __init__()
def __init__(self):
self.data = []
-
self,表示类的实例,类似于Java的this,类的方法必须有一个额外的第一个参数名称是 self
-
继承
class DerivedClassName(BaseClassName):
-
调用父类方法:super().methodName() 或者 BaseClass().methodName()
-
私有属性方法:属性、方法名用两个下划线开头,__private_attrs、__private_method
-
变量作用域
-
在内部作用域修改外部作用域的变量时,用global
num = 1
def fun1():
global num # 需要使用 global 关键字声明
print(num)
num = 123
print(num)
fun1()
print(num)-
修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量,用nonlocal
def outer():
num = 10
def inner():
nonlocal num # nonlocal关键字声明
num = 100
print(num)
inner()
print(num)
outer() -
标准库
-
操作系统接口 os
-
执行脚本的命令行参数 sys.argv
-
字符串正则 re
-
数学 math
-
随机数 random
-
日期时间 datetime,time
json
dict中的key-value为单引号,json中的节点-值为双引号
json.dumps() 编码
json.loads() 解码
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2020-05-10 Redis 键(key)
2020-05-10 Redis数据类型命令
2020-05-10 Redis 配置命令 CONFIG
2020-05-10 Redis简介