您的位置:首页 > 编程语言 > Python开发

python必须了解的一些知识

2018-11-02 09:19 465 查看

python工程组织结构包括(包>模块>类>方法>变量),方法和变量好理解,那么我们就弄清楚包、模块、类的含义

包、模块、类的概念

  • 包(Package)
    包:在Pycharm中的表现形式就是左侧文件列表中的一个目录,通常存放多个关系密切的模块,唯一需要注意的就是,只有包含_ init _.py文件的目录才叫做’包’.

    右键New→Python Package就是创建’包’的过程

  • 模块(module)
    模块:是一个文件,可以直接使用import导入,可作为模块的文件类型有’.py’,’.pyo’,’.pyc’,’.pyd’,’.so’,’.dll’


  • 类:用来描述具有共同特征的一类事物,就像我们通俗理解的’人类’可被看作一个类,然后用这个类定义出每个具体的人–你,我,他等作为其对象;类还有属性和功能,属性就是这类事物的特征,功能就是能做什么,也就是方法或函数,举例说明

    class Person():                                  #定义类,起名为Person
    n = 100                                      #类属性,类内的变量
    def __init__(self,name,age,phone):           #构造函数,类接收外部传入参数全靠构造函数
    self.name = name
    self.age = age
    self.phone = phone
    def printing_name(self):                     #类的方法
    print('我的名字是:%s'%self.name)
    def printing_age(self):
    print("我的年龄:%s"%self.age)
    def printing_phone(self):
    print("我的号码:%s"%self.phone)
    
    test = Person('luke',21,'123456')                #类的实例化,将参数传入类中,传入参
    #数可以多但不可以少于类构造函数的参数(self参数
    #除外,self是将实例化的变量名传入类)
    print("这是类实例化后的内存地址:%s"%test)
    test.printing_name()                             #调用实例化后类中的方法
    test.name = 'moon'                               #可以修改构造函数中参数的值
    test.printing_name()
    test.printing_phone()
    print(test.n)
    test.n = 200                                     #修改类属性,只针对test实例化生效
    print(test.n,'\n====================')
    
    t2 = Person('jack',22,'112233')                  #实例化类对象,命名t2
    print(t2.n)
    t2.printing_age()

编码规范

  • 代码编排
    缩进:4个空格的缩进(IDE可自动判断缩进),尽量不适用Tab,也不要Tab和空格混用
    换行:使用反斜杠 ’ \ '换行
    空行:类和top-level函数定义之间空两行;各方法定义之间空一行;函数内逻辑无关段落间空一行

  • 空格的使用
    右括号前不加空格
    逗号,冒号,分号前不加空格
    函数序列左括号前不加空格,func(),list()
    多语句不写在同一行,使用’ ; ’
    if/for/while语句中,必须另起一行写执行语句
    不使用tab键,尽量都是用空格

  • 命名规范
    包:小写字母命名,可使用下划线,lower_with_under
    类:驼峰法命名,首字母大写,私有类下划线开头,HelloWorld
    函数:小写字母命名,私有函数下划线开头,lower_with_under
    变量:小写字母命名,私有变量下划线开头,lower_with_under
    常量:全大写字母命名,私有常量下划线开头,CAPS_WITH_UNDER
    总结
    1 唯独类命名用驼峰法
    2 常量字母都是大写
    3 其他全是小写用下划线分隔
    4 下划线开头的都是私有的

补充

  • 特殊模块_ init _.py
    _ init _.py模块,是在新建包时,自动创建的模块,也叫初始化模块;我们在导入该包时,默认会先运行该模块,我们验证一下:

    #在_ _init_ _.py模块中加入
    print('开始导入包')


    有_ init _.py模块的文件夹才叫做’包’,才可以被导入

  • _name _=’_main _'
    经典解释 → '让你的脚本模块既可以导入其他模块使用,也可使该模块自己执行’

    #module.py
    def main():
    print('我是被直接执行的')
    if __name__=='__main__':
    main()
    else:
    print('我被导入')
    ---------------------------
    #test.py
    import module
    print('导入完成')

    我们在直接执行module.py文件时,会执行if判断中的内容,最终输出’我是被直接执行的’;
    当我们执行test.py文件时,导入了module模块,最终输出’我被导入’ \n ‘导入完成’,没有执行if判断中的内容,为什么?
    解释
      _name _ :前后加双下划线表明是系统定义的变量名,是用来标识模块名字的一个系统变量
      如果模块是被导入的,_name _ 的值就是模块名字
      如果模块是被直接执行的,_name _的值就是’_main _’
      文件中有if _name _ == ‘_main _’,则表明该我文件是整个工程的入口文件

  • 模块导入

    #import语句
    import module               ## 导入module模块,python解释器通过sys.path的路径搜索该模块
    module.name()               ## 调用module中的函数
    #更改调用名称
    import module as md         ## 导入module模块,并命名为md
    md.name()                   ## 调用module中的函数
    #from...import...语句
    from module import name     ## 导入module模块中的name函数,不会导入整个模块

    导入要求:要求被导入的模块与准备导入的模块文件是同级,若不在同级,则需要将模块的路径加入该文件的环境变量里

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: