python 使用过程遇到的问题

    技术2022-07-13  72

    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

    Processed: 0.010, SQL: 9