Python 语法小结
目录
背景和价值
变量
变量销毁
del 变量名
空值 None
temp = None
print(temp)
if temp == None:
print("none")
自定义类
self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。
在函数内访问类的属性, 类名.属性名
class Employee:
'所有员工的基类'
empCount = 0
def __init__(self, name, salary):
self.name = name
self.salary = salary
Employee.empCount += 1
def displayCount(self):
print "Total Employee %d" % Employee.empCount
def displayEmployee(self):
print "Name : ", self.name, ", Salary: ", self.salary
https://www.runoob.com/python/python-object.html
python中的*args和**kwargs的用法详解
https://www.cnblogs.com/Ao0216/p/16696847.html
from import
1. 基本语法
模块(module)一个 .py 文件,包含 Python 代码(函数、类、变量等)。
from module import (
item1,
item2,
item3
)
- 作用:从
module模块中导入item1、item2和item3。 - 优点:
- 每行只导入一个内容,方便阅读。
- 方便添加或删除导入项。
- 在版本控制(如 Git)中,更容易跟踪修改。
2. 示例
单行导入
from langchain.prompts import ChatPromptTemplate, FewShotChatMessagePromptTemplate
多行导入
from langchain.prompts import (
ChatPromptTemplate,
FewShotChatMessagePromptTemplate,
)
两种写法功能完全一样,但多行导入更清晰,尤其是在导入内容较多时。
3. 使用场景
场景 1:导入多个内容
from math import (
sqrt,
sin,
cos,
pi
)
场景 2:导入内容较多时
from langchain.prompts import (
ChatPromptTemplate,
FewShotChatMessagePromptTemplate,
SystemMessagePromptTemplate,
HumanMessagePromptTemplate,
)
场景 3:导入内容较长时
from some_long_module_name import (
SomeLongClassName,
another_long_function_name,
yet_another_long_variable_name,
)
import 如何避免导入冲突
在 Python 中,导入多个模块或函数时,可能会遇到 重名问题(即多个模块或函数有相同的名称)。为了避免这种情况,可以采取以下几种方法:
1. 使用 import 而不是 from ... import
- 方法:直接导入模块,通过模块名访问函数或类。
- 优点:避免函数名冲突,明确函数来源。
- 示例:
import module1 import module2 module1.foo() # 明确调用 module1 的 foo module2.foo() # 明确调用 module2 的 foo
2. 使用 as 关键字重命名
- 方法:在导入时为模块或函数指定别名。
- 优点:解决重名问题,同时简化代码。
- 示例:
from module1 import foo as foo1 from module2 import foo as foo2 foo1() # 调用 module1 的 foo foo2() # 调用 module2 的 foo
3. 使用 import 导入模块并重命名
- 方法:导入整个模块并为其指定别名。
- 优点:避免重名问题,同时减少代码冗余。
- 示例:
import module1 as m1 import module2 as m2 m1.foo() # 调用 module1 的 foo m2.foo() # 调用 module2 的 foo
4. 使用 __all__ 控制模块的公开接口
- 方法:在模块中定义
__all__变量,明确哪些函数或类可以被导入。 - 优点:避免意外导入不需要的内容。
- 示例:
# module1.py __all__ = ['foo', 'bar'] def foo(): print("module1 foo") def bar(): print("module1 bar") def baz(): print("module1 baz")# 使用 from module1 import * from module1 import * foo() # 可以访问 bar() # 可以访问 baz() # 报错,未在 __all__ 中定义
5. 使用相对导入(适用于包内部)
- 方法:在包内部使用相对导入(如
from . import module)。 - 优点:避免与外部模块重名。
- 示例:
# my_package/module1.py def foo(): print("module1 foo") # my_package/module2.py from . import module1 module1.foo()
6. 使用 sys.modules 检查模块是否已导入
- 方法:在导入前检查模块是否已加载。
- 优点:避免重复导入和潜在冲突。
- 示例:
import sys if 'module1' not in sys.modules: import module1 if 'module2' not in sys.modules: import module2
7. 使用命名空间包
- 方法:将模块组织到不同的命名空间包中。
- 优点:彻底避免重名问题。
- 示例:
# 文件结构 # namespace1/module1.py # namespace2/module1.py from namespace1 import module1 as m1 from namespace2 import module1 as m2 m1.foo() # 调用 namespace1 的 module1 m2.foo() # 调用 namespace2 的 module1
8. 使用工具检查冲突
- 方法:使用静态分析工具(如
flake8、pylint)检查代码中的命名冲突。 - 优点:提前发现问题,确保代码质量。
- 示例:
flake8 my_script.py pylint my_script.py

浙公网安备 33010602011771号