# 2211-pythonAdvanced **Repository Path**: hj00/2211-python-advanced ## Basic Information - **Project Name**: 2211-pythonAdvanced - **Description**: python进阶 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-11-28 - **Last Updated**: 2023-04-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 2211-pythonAdvanced >python进阶历程 ## pip常用命令 ```shell pip install xxx pip install xxx==x.x.x pip install -U xxx pip list pip search xxx pip install -r requirements.txt pip uninstall xxx pip uninstall all ``` ## 虚拟环境 ### 官方 venv ```shell c:\Python35\python -m venv c:\path\to\myenv # 无环境变量 python -m venv c:\path\to\myenv # 有环境变量 \Scripts\activate.bat # 激活 ``` ### 第三方 pipenv ```shell pip install pipenv pipenv -version cd d:\dir pipenv install pipenv install xxx pipenv install -r /path/requirements.txt pipenv lock -r # 提取依赖库,精准迁移 pipenv shell # 激活方式1 pipenv run python /path/xx.py # 激活方式2 pipenv uninstall xxx pipenv uninstall all ``` ## 匿名函数 ```python add = lambda n, m: n + m add(2, 3) # 调用匿名函数 ``` ## 序列操作 ### map ```python myList = [1,2,3,4,5] list(map(lambda x:x*2,myList)) # [2, 4, 6, 8, 10] ``` ### filter ```python myList = [1,2,3,4,5] list(filter(lambda x:x%2,myList)) # [1, 3, 5] ``` ### enumerate ```python myList = ['enumerate','增加索引'] list(enumerate(myList)) # [(0, 'enumerate'), (1, '增加索引')] ``` ## property属性 >防止从类或对象的外部修改内部属性,只能通过定义特定的方法修改 ```python class Person: def __init__(self): self.__age = 9 @property def age(self): return self.__age @age.setter def age(self, val): self.__age = val person = Person() person.age=9 print(person.age) # 8 ``` 等价于 ```python class Person: def __init__(self): self.__age = 9 def getter(self): return self.__age def setter(self, val): self.__age = val age = property(getter, setter) person = Person() person.age=9 print(person.age) # 8 ``` ## 特殊语法 ### 变量赋值 ```python a, b = 1, 2 a, b = b, a ``` ### 连续赋值 ```python a = b = None ``` ### 连续比较 ```python a, b = 1, 3 if 0 < a < b < 10: print('pass') ``` ### 装包解包 ```python a, b, c = 1, 2, 3 t = a, b, c # tuple:(1,2,3) d, e, f = t ``` **高级装包解包** ```python a, b, c = 1, [2,3], 4 t = a, *b, c # (1,2,3,4) d, e, *f = t # d=1, e=2, f=[3,4] ``` ## 推导表达式 ### 列表推导表达式 ```python myList = [1, 2, 3, 4, 5] myList2 = [i for i in myList if i % 2] # 过滤奇数 myList3 = [i * 2 for i in myList] # 每个元素乘2 names = ['张三', '李四', '王老六'] names2 = [name for name in names if len(name) == 3] # 过虑长度为3的名字 ``` ### 字典推导表达式 ```python myDic = {'k1': 1, 'k2': 2, 'k3': 3} myDic2 = {k: v for k,v in myDic.items() if v%2} # 过滤值是奇数的子项 myDic3 = {k: v*2 for k,v in myDic.items()} # 所有子项值乘2 ``` ### 集合推导表达式 ```python mySet = {1, 2, 3, 4, 3, 5} # 集合内没有重复元素,若有则自动去重 mySet2 = {i for i in mySet if i%2} mySet3 = {i for i in mySet} ``` ### 生成器推导表达式(嵌套) ```python """求笛卡尔积""" m = [1, 3, 5] n = [2, 6] cartesianProduct = [(i, j) for i in m for j in n] # [(1, 2), (1, 6), (3, 2), (3, 6), (5, 2), (5, 6)] ```