1.用Python复制文件的9个方法
https://zhuanlan.zhihu.com/p/35725217
2.python命令行解析之parse_known_args()函数和parse_args()
https://blog.csdn.net/lyb3b3b/article/details/82822734
3.PyCharm 使用技巧快捷键
http://www.mamicode.com/info-detail-2319050.html
https://www.baidu.com/link?url=YAOzmdnUTw7g2vUXgoA2Jlw2t_D4tt9XnkRAzBJYyYinUoFCIhDLNrOmQ-qhMQQ-77BA1NdBh27hbTj7DiV5wN1pcjnREkclB2v_FG80Aya&wd=&eqid=853e2edf0000c8fa000000065f08a7dc
4.【思考】Python声明和定义可以分开么?(不可以)
https://www.baidu.com/link?url=AhqdrJ–9ih68imhfaAxVI-E79PpE4TflqvIhI7gb1qyaoG4qYJWC9PnF_nk9dfbiXWWE2Xsiq5wPAltD9x5eV0M8So-1c13HbUhPfqY3dC&wd=&eqid=b7c6271b00004520000000065f08ab0b
5.忽略python多个返回值中的一个或者多个用下划线(_)来替代
一个常见的惯例是使用“_“作为要忽略的元组元素的变量名。例如:
def f():
return 1, 2, 3
_, _, x = f()
6.函数的多个返回值可以用一个元祖来接收
https://www.cnblogs.com/yifchan/p/python-1-11.html
7.获取当前文件路径
print(__file__)#获取当前执行文件的绝对路径
print(os.path.basename(__file__))#获取当前执行文件名
print(os.path.dirname(__file__))#获取当前执行文件的上一层目录(父目录)
8.python的os模块和sys模块的区别
https://www.cnblogs.com/balllyh/p/10394851.html
9.python的eval内置函数
https://www.cnblogs.com/balllyh/p/10394851.html
10.正则工具网站
http://tool.chinaz.com/regex/
11.python内置函数总结
https://www.runoob.com/python/python-built-in-functions.html
https://www.cnblogs.com/Eva-J/articles/7206498.html#_label2
12.python模块和类在import上的区别
https://www.iteye.com/blog/dudong0726-1226907
13.python私有方法和私有属性属性理解,子类继承
https://www.cnblogs.com/maxiaohei/p/7787256.html
14.解决 ModuleNotFoundError: No module named ‘pip’(pip在升级的时候失败导致丢失)
可以首先执行 python -m ensurepip 然后执行 python -m pip install --upgrade pip 即可更新完毕。
15.python3的cxfreeze 的简单使用
https://blog.csdn.net/zz__ElPsyCongroo/article/details/38824301?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.nonecase
https://blog.csdn.net/sherpahu/article/details/81805482?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
16.Python中双冒号的作用[::],索引切片
https://blog.csdn.net/u011771047/article/details/52259401
17.python中的__repr__ 方法
https://blog.csdn.net/qq_42778001/article/details/102604983
18.Python %d、%s、%r等用法(%r,万能,保持后面的元素类型不变)
https://www.jianshu.com/p/7fc0a177fd1f
19.Python __dict__属性详解
https://www.cnblogs.com/alvin2010/p/9102344.html
20.Python包的相对导入时出现错误的解决方法
from . import XXX
#或者
from .. import XXX
#SystemError: Parent module '' not loaded, cannot perform relative import
#或者
#ValueError: attempted relative import beyond top-level package
其实这两个错误的原因归根结底是一样的:在涉及到相对导入时,package所对应的文件夹必须正确的被python解释器视作package,而不是普通文件夹。否则由于不被视作package,无法利用package之间的嵌套关系实现python中包的相对导入。
文件夹被python解释器视作package需要满足两个条件:
1、文件夹中必须有__init__.py文件,该文件可以为空,但必须存在该文件。
2、不能作为顶层模块来执行该文件夹中的py文件(即不能作为主函数的入口)。
补充:在"from YY import XX"这样的代码中,无论是XX还是YY,只要被python解释器视作package,就会首先调用该package的__init__.py文件。如果都是package,则调用顺序是YY,XX。
另外,练习中“from . import XXX”和“from … import XXX”中的’.‘和’…’,可以等同于linux里的shell中’.‘和’…'的作用,表示当前工作目录的package和上一级的package。
参考:https://www.cnblogs.com/ArsenalfanInECNU/p/5346751.html
21.python中set和frozenset方法和区别
set(可变集合)与frozenset(不可变集合)的区别:
set无序排序且不重复,是可变的,有add(),remove()等方法。既然是可变的,所以它不存在哈希值。基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交集), difference(差集)和sysmmetric difference(对称差集)等数学运算.
sets 支持 x in set, len(set),和 for x in set。作为一个无序的集合,sets不记录元素位置或者插入点。因此,sets不支持 indexing, 或其它类序列的操作。
frozenset是冻结的集合,它是不可变的,存在哈希值,好处是它可以作为字典的key,也可以作为其它集合的元素。缺点是一旦创建便不能更改,没有add,remove方法。
https://www.cnblogs.com/panwenbin-logs/p/5519617.html
22.Python中strip()、lstrip()、rstrip()用法详解
Python中有三个去除头尾字符、空白符的函数,它们依次为:
strip: 用来去除头尾字符、空白符(包括\n、\r、\t、’ ‘,即:换行、回车、制表符、空格)
lstrip:用来去除开头字符、空白符(包括\n、\r、\t、’ ‘,即:换行、回车、制表符、空格)
rstrip:用来去除结尾字符、空白符(包括\n、\r、\t、’ ',即:换行、回车、制表符、空格)
https://www.cnblogs.com/huangbiquan/p/7923008.html
23.Python len()、reversed()、contains() (十二)
https://blog.csdn.net/xhw88398569/article/details/48690577/
24.无处不在的__dict__
https://www.cnblogs.com/alvin2010/p/9102344.html
25.python类的三个装饰器方法classmethod,staticmethod,property
(1)classmethod 和staticmethod这两个方法的使用
@classmethod,和@staticmethod是类中的特殊装饰器
@classmethod:在定义方法的时候需要传递一个cls,cls代表了当前的类,可以通过cls.类属性和各种方法(需要注意的是当cls.类普通方法的时候需要在第一个参数位置传递一个实例化对象(因为有一个self,所以需要传递))
@staticmethod:在定义的时候不需要传递cls和self,这样就可以看成是普通函数一样,在使用的时候可以通过类或者实例化对象.staticmethod方法名来进行调用,如果在静态方法中想调用其他类方法,需要用类名(或者实例化对象名).方法名调用
注意:类名是无法调用实例化对象属性的,只能调用类属性,但是实例化对象可以调用类属性和对象属性,如果不想被类外直接访问摸一个属性,那么可以用__双下划线来修饰属性,达到类外无法访问的目的
class A:
__bar = 1
def __init__(self,name):
self.name = name
print(self.name)
def func1(self, age):
print(self.name, ':', age)
@classmethod
def cfun(cls):
print("类方法调用")
print(cls.bar)
print(cls.sfunc())
pass
@staticmethod
def sfunc():
print("static方法被调用")
#print(A.__bar)#无法访问私有属性
print(A.__dict__)#查看类具有哪些属性和方法
#{'func1': <function A.func1 at 0x0000000001056AE8>, 'sfunc': <staticmethod object at 0x0000000001069F60>, 'cfun': <classmethod object at 0x0000000001069D68>, '__weakref__': <attribute '__weakref__' of 'A' objects>, '__init__': <function A.__init__ at 0x0000000001056A60>, '__doc__': None, '_A__bar': 1, '__dict__': <attribute '__dict__' of 'A' objects>, '__module__': '__main__'}
#可以看到类具有上面定义的4中方法:func1,func1,cfun,__init__
a = A('python')
print(dir(a))#查看对象有哪些属性和方法
#仍然有这4种方法cfun', 'func1', 'name', 'sfunc',说明也可以用对象来调用
(2)@property装饰器:属性装饰器
用来保护对象属性,同时将方法伪装成属性
class Student:
def __init__(self, name,score):
self.__score = score
self.name = name
#利用property装饰漆进行将score方法伪装成属性,此时score方法中不能有额外参数,而且需要有对应的返回值,
#这样开辟了在保护私有属性的对类外访问接口,同时可以根据类似访问属性的方式来访问
@property
def score(self):
print('property被调用')
return self.__score
#当对象.score=XX的使用被调用,将XX传递给value
@score.setter
def score(self, value):
print('setter被调用')
self.__score = value
jack = Student('jack',60)
jack.score = 80
print(jack.score)
#setter被调用
#property被调用
#80
注意下面这种情况,尽量不要将property修饰的方法名与对象或者类属性名同名,这样的话在访问self.或者赋值的时候会调用property修饰的方法,容易产生错误隐患,如下面的self.score和@property def score(self):所示
#如果将self.__score改成self.score后,调用jack.score只会执行def score(self)方法,
#而不是直接返回self.score的值,而且关于类中的任何位置如果调用
#self.score=XX那么也会调用def score(self, value)方法内容
class Student:
def __init__(self, name,score):
self.score = score#会调用def score(self, value)方法
self.name = name
@property
def score(self):
print('property被调用')
return self.__score
@score.setter
def score(self, value):
print('setter被调用')
self.__score = value
jack = Student('jack',60)#init里面有调用def score(self, value)
jack.score = 80#调用def score(self, value):
print(jack.score)调用def score(self):
#输出结果
#setter被调用
#setter被调用
#property被调用
#80
参考:https://www.liaoxuefeng.com/wiki/1016959663602400/1017502538658208