python 使用过程遇到的问题

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值