zoukankan      html  css  js  c++  java
  • Python书写规范

     PEP8代码风格

    PEP8是Python对于代码的风格指南,给出了Python代码组成的编码约定。我们每个人都会形成自己的编码风格,但我们应尽量的参考此指南来编写Python代码,致力于代码更加规范化,这样才能显现出上文提到过的Python优点嘛。

    简单说下几个重要的语法规范吧:

    缩进规范:不允许tab和空格混用

    Python是一门用空格缩进来区分代码层次的语言,其实Python并没有强制要求你用Tab缩进或者用空格缩进,甚至空格按几个都没有强制要求。但PEP8规范建议四个空格为语句的缩进块。用缩进来控制不同的语句块是Python的一大特色,缩进也让Python的代码更优美,简洁。
    在日常编辑中,当代码量增多,逻辑语句复杂时。因为缩进造成的bug层出不穷,比如造成逻辑判断的报错,造成程序的异常退出等,都是需要我们注意的。一般的,引起这些错误的原因,可能是Tab键和空格键在不同的编辑环境混用造成的,也可能是你逻辑判断时忘了缩进,或者多了一个缩进,不过没关系,只要我们在敲代码时,注意点,并且PyCharm在缩进错误时,会有提示的(一般为飘红)。
    这里需要的注意的是:这个四个空格,可以手动敲4下空格键(废话!),也可以用键盘的Tab键(别问在哪,Q键左边,Capslock键上边)。但是,千万不要Tab和空格键混用,因为不同的编辑器对Tab键的解释是不同的,有的是默认4个空格,有的是8个。但空格永远是一致的!Python中不提倡用Tab来处理缩进,但一般编辑器的Tab都是4个空格,我们也能设置嘛!反正要是让洒家一直咔咔咔咔咔咔敲空格,还不如去搬砖(我擦,貌似暴露了什么)....
    ps:如果要是想让代码往右侧缩进4个,就Tab一次就行了;要是让代码往左侧缩进4个空格,就Shift + Tab就完了。如果是整个代码块,选中所有即可。

    不允许使用";"

    不少有别的语言经验的大佬来学习Python时。每当敲完一行代码后。姿态非常优美的敲个分号作为结束!比如:

    print('hello world');    # ×
    print('hello world')    # √

    Python不建议使用分号!除此之外,也不要用分号连接两条语句:

    x = 3;print('hello world')

    为了Python代码更加优美、简洁,请忘记分号吧!

    不允许两个逻辑行写到物理行上

    ```python
    x =5;print(111)    虽然语法正确,但是语法规范上算是错误写法。最好还是每行只写一句,这样代码更易读。
    ```

    那么,你可能会说,这个一行万一放不下怎么办?那就用到了行连接符号,如:

    >>> name =  "I'm oldboy, I love pyt  
    ... hon"  
    >>> name  
    "I'm oldboy, I love python"  

    一行不要超过80个字符

    一般的,每行不超过80个字符,但也有例外:

    • 长的导入模块语句
    • 注释里的URL
    • 不要使用反斜杠连接行

    Python会将 圆括号, 中括号和花括号中的行隐式的连接起来 , 你可以利用这个特点. 如果需要, 你可以在表达式外围增加一对额外的圆括号:

    if (width == 0 and height == 0 and
             color == 'red' and emphasis == 'strong'):pass

    如果一个文本字符串在一行放不下, 可以使用圆括号来实现隐式行连接:

    x = ('This will build a very long long '
         'long long long long long long string')

    注释!很重要,是给人看的,就写好注释。你的弱鸡代码只想给一眼就能望穿代码的大佬看,那我服你。。。

    在Python中注释分为两种方式:

    • 单行注释(#号表示,快捷键为Ctrl+?):一般用来对一行代码或者几行代码进行注释
    • 多行注释(三对引号表示):一般用与对较多的代码行或代码块进行注释,或者对整个文件进行描述,下图演示了单行注释和多行注释在实际编写代码中的示例。

    别忘了,我们写的代码是给谁看的?你可能会说是给计算机?CPU?是个鬼鬼!是给人看的!

    我们要在一些重要的地方加上一些注释,让别人一眼就知道是干啥用的。就像产品的说明书一样。该有的不能少!

    但也不能满篇都是注释!这就显得low了。要显得恰如其分,起到画龙点睛的作用!给人一种一看就有一种:我x,大佬啊,这应该裱起来帖床头,时时瞻仰啊!不能让人家一看:我x,这是什么?dogshit

    ps :不管是多少个引号,只在一行时只是被当做引号使用,并没有注释的用意

    关于引号

    在Python中,单引号和双引号都能用来表示一个字符串,比如:

    str1 = 'oldboy'  
    str2 = "oldboy" 

    在Python中,str1和str2是没有区别的,但是在有些情况下,却要注意的,例如你如何定义:I’m oldboy,这时候就要单双引号搭配使用了,如:

    str3 = "I'm oldboy"  

    这也是Python人性化的方面之一,至于复杂的用法,我们后面讲字符串的时候再说。

    空行

    顶级定义之间空两行, 方法定义之间空一行。
    顶级定义之间空两行, 比如函数或者类定义. 方法定义, 类定义与第一个方法之间, 都应该空一行. 函数或方法中, 某些地方要是你觉得合适, 就空一行。

    最重要的一点:就算是喝假酒上头,你也要保证你敲得符号都是英文状态下的

    你敲别的错误还能肉眼检查出来,你敲几个中文符号.....呵呵,就等着变熊猫吧!!!!!

    最后多说一条:在pycharm中,直接如下图点击,可自动将全文不复返输入进行规范化较正。

    变量与“常量”

    简介:

    我们通过一个名字,指向一个人,或者指向一个具体的事物。这在Python中是同样适用。Python中,这个名字称为变量,而指向的对象为一串字符串,一个具体的数值等等。变量也是可变状态的、对内存地址一种抽象。

    变量赋值具体方式可查看https://www.cnblogs.com/Neeo/articles/10522363.html

    我对Python变量的理解就是:它和其他语言例如shell,php等等语言的变量是一样的,知识书写方式与调用方式有点细微差别。都是给一个可能不断改变的数据定义一个固定的变量名,以便于调取使用!

    但是需要注意的是:Python属于强类型的语言。如果定义了一个字符串类型的a。如果不经过强制转换,那么它就永远是字符串类型的了,程序根本不可能把它当做整形来处理。所以,Python也是类型安全的语言。

    说到变量,那就不得不说一下常量。一般的来说,变量,就是代指不断变化的量,而常量指(Python在语法上并没有定义常量,尽管PEP8规范定义了常量的命名规范为全部大写字母和下划线组成),基本上定义了之后不怎么变化的变量。比如我们保存一段信息:

    IP = "127.0.0.1"

    最后小结一下变量与常量的书写规范吧:

    Python虽然没有常量,但还是会吧非特殊情况不更改的变量叫做常量。常量用全大写字母表示

    Python变量一般用驼峰或者111_2312格式

    变量引用与删除:

    没有被引用的变量会被自动清理掉

    引用变量:直接引用

    删除变量:del x

    输入与输出

    屏幕输出流:print('ashfqel')

    输入流(但是不打印):input('>>>: ')

    输入后打印到屏幕:

    ```python
    result=input(''>>>: ')
    print(result)
    ```

    运算符与表达式

    具体可参考https://www.cnblogs.com/Neeo/articles/10522370.html。这里就不讲那么多啦

    表达式

    大多数的逻辑行都包含表达式,如计算面积就是一个简单的表达式,表达式可以分解为运算符(操作符)与操作数,运算符是为了完成某个功能,它们由如+-这样的符号或者其它特定的关键字表示,运算符需要数据来进行计算,这样的数据被称为操作数。

    主要有:算数运算符,比较运算符,赋值运算符,逻辑运算符,成员运算符,身份运算符,位运算符...

    算数运算符

    算数运算符和我们数学上计算的符号使用是一致的,Python支持的算数运算符,如下表所示:

    运算符描述
    + 加,两数相加
    - 减,得到负数或者一个数减去另一个数
    * 乘,两数相乘或者返回一个被重复若干次的字符串
    / 除,两个数相除
    // 取整除
    % 取模,返回除法的余数
    ** 幂,返回x的y次方

    比较运算符

    比较运算符通常用来比较两个变量的关系:

    运算符描述
    == 等于,比较两个对象是否相等
    != 不等于,比较两个数是否不相等
    > 大于
    < 小于
    >= 大于等于
    <= 小于等于

    赋值运算符

    前文中所讲赋值操作,如x = 3,即将一个整形数字3赋值给变量x,其中=就是赋值运算符,另外,Python中还有其他的赋值运算符,如下表所示:

    运算符描述
    = 简单的赋值运算符
    += 加法赋值运算符
    -= 减法赋值运算符
    *= 乘法赋值运算符
    /= 除法赋值运算符
    %= 取模赋值运算符
    **= 幂赋值运算符
    //= 取整除赋值运算符

    逻辑运算符

    复制代码
    >>> 2 < 3 and 3 == 3    # 逻辑运算符 and  
    True  
    >>> 2 < 3 or 3 != 3     # 逻辑运算符 or  
    True  
    >>> not 1 > 2           # 逻辑运算符 not  
    True  
    复制代码

    成员运算符

    我们很多时候,都会做这样的判断,王二狗子在家吗?小李同学不在班里吗?小芳的手机号我存在手机联系人中了吗?等等等等。Python中也存在这种在不在的关系判断。并由具体的运算符来完成这样的运算,我们称这样的运算符为成员运算符,如下表所示:

    运算符描述
    in 如果在指定的序列找到值则返回True,否则返回False
    not in 如果在指定的序列内没找到值返回True,否则返回False
    >>> 'a' in 'abcd'       # 成员运算符 in  
    True  
    >>> 'a' not in 'abcd'   # 成员运算符 not in  
    False  

    身份运算符

    身份运算符用于比较两个对象的存储关系

    复制代码
    >>> a = 'abcd'  
    >>> b = a  
    >>> c = a  
    >>> b is a         # 身份运算符 is  
    True  
    >>> b is c  
    True  
    >>> c is not a     # 身份运算符 is not  
    False  
    复制代码

    运算符的优先级

    那么,这么多运算符在参与运算时,谁先参与计算?谁后计算?比如数学运算中先算乘除,后算加减一样,Python中也有规则,称之为运算符优先级。下表总结了Python中的运算符优先级,从最低优先级(最少绑定)到最高优先级(最多绑定)。同一框中的运算符具有相同的优先级。除非明确给出语法,否则运算符是二进制的。运算符在同一框中从左到右分组(除从右到左分组的求幂运算外)。
    请注意,比较、成员测试和身份测试都具有相同的优先级,并且具有比较部分中描述的从左到右的链接特性。

    具体查看官网:https://docs.python.org/3/reference/expressions.html#operator-precedence

    流程控制语句

    和其他语言一样,流程控制语句在Python中也包括三个部分。顺序执行语句、分支执行语句(或称条件语句if/else)和循环语句(for/while),如下图所示:

     简单的if逻辑语句:

    复制代码
    user= input('user: ')
    pwd = input('pwd: ')
    if user == "dazhu" and pwd == "123":
    print('ok')
    else:
    print('no')
    复制代码

    if嵌套语句:

    复制代码
    score = int(input("enter score:"))  
      
    if score > 100 or score < 0:  
        print('你可能输入了一个来自火星的成绩 %s'%score)  
    elif score >= 90:  
        print('成绩优秀')  
    elif score >= 75:  
        print('成绩良好')  
    elif score >= 60:  
        print('马马虎虎吧')  
    else:  
        print('成绩不合格')  
    复制代码
    复制代码
    num = int(input(">>>"))  
    if num < 10:  
        if num == 3:  
            print('输入正确')  
        else:  
            print('再接再厉')  
    else:  
        print('输入错误')  
    复制代码
    复制代码
    source = input('输入成绩: ')
    if source.isdigit():  # 判断字符串内的字串是否为整形,如果是,则返回true,否则返回false
        source = int(source)  # 将字符串转换为整形术
        if 90 <= source <= 100:
            print('优秀')
        elif 80 <= source < 90:
            print('还行吧')
        elif source > 100 or source < 0:
            print('滚')
        elif 0 <= source < 60:
            print('加油,努力,奋斗')
    else:
            print('输入的是什么?心里没数吗??', source)
    复制代码

    注意:if语句的嵌套不易过多,这样会降低代码的可读性。

    循环语句之while循环

    先来看while循环,其语法基本形式如下。

    while 表达式:  
        循环体  

    实例:

    复制代码
    count = 0   # 循环中的变量
    sum = 0   # 用于求和
    while count < 100:  # 当count小于100的时候,while循环执行(起到循环作用)
        count = count + 1#起到维持和终结循环作用
        # print(count)  #每次count值都会加一
        sum = sum + count  # sum都会加上count值
    print(sum)
    # 或者简写为下面这种方式
    count = 0
    sum = 0
    while count < 100:
        count += 1
        sum += count
    print(sum)
    复制代码

    注意:如果运行下例代码,就会发现程序是不是停不下来了?没错,这就是死循环(因为只有循环体呀)。我们在编写代码的时候后,如无必要,应注意避免死循环的产生。

    while True:  
        print('ok')  

    循环语句之for循环

    Python的for循环可以遍历任何序列类型

    for循环的基本形式为:

    for 变量(i) in 可迭代对象:  
        循环体  

    关键点:循环次数取决于迭代对象内有多少元素。

    有了for循环,我们在处理序列类型的数据就方便多了,比如循环打印一串字符串的每个字符。

    str1 = 'dazhuisstrongman'  
    for i in str1:  
        print(i)  

    循环嵌套

    在Python中,我们可以在while循环中嵌套while循环,也可嵌套for循环。反之,我们也可以在for循环中嵌套for循环,也可以嵌套while循环。

    复制代码
    count = 0
    while count < 3:
        num = 0
        while num <= 3:
            print('*' * num)
            num += 1
        count += 1
    复制代码

    break语句

    break语句用来终止循环语句,即使循环条件依然成立,碰到break语句也会终止循环。

    break语句用在for和while循环中,如果当前的循环是嵌套类型的循环,break语句将停止执行包含break语句的循环,直接开始执行当前循环之外的下个Python语句。

    示例,打印字符串,遇到h时终止循环。

    复制代码
    for i in 'python':
        if i == 'h':
            print(i)
            break
        print(i)
    复制代码
    复制代码
    count = 0
    while count < 3:
        for i in 'python':
            if i == 'h':
                print(i)
                break
            print(i)
        if count == 2:
            break
        count += 1
    
    """
    p
    y
    t
    h
    p
    y
    t
    h
    p
    y
    t
    h
    """
    复制代码

    continue语句

    break语句结束所在循环,而continue语句则是结束当前循环执行的剩下的代码,继续执行下次循环。continue语句在for和while循环中都适用。

    for i in 'python':
        if i == 'h':
            continue
        print(i)

    ps:如果continue之前没有对应的结束条件:x = x + 1。则会进入本次循环的死循环。

    复制代码
    num = 1
    while num <= 10:     # 维持循环的条件
         if num == 7:
             # num = num + 1
             num += 1
             continue
         else:
             print(num)
             # 结束循环的条件
             num = num + 1
     print('循环结束,当前的num是: ', num)
    复制代码

    pass语句

    复制代码
    i = 0  
    while i < 10:  
        if i == 3:  
            pass  
        print(i)  
        i += 1  
    复制代码

    上面的代码示例中,pass语句这个代码块,意思就是我还没想好要干啥,但什么都不写程序不完整,无法执行,

  • 相关阅读:
    vMware 按装 MacOs
    jenkin
    Robotium
    robotframework
    Appium Server
    A new session could not be created. (Original error: Requested a new session but one was in progress) (WARNING: The server did not provide any stacktrace information)
    hdu2609 How many (最小表示法)
    UCF Local Programming Contest 2015 H. Reach for the Stars
    2020牛客寒假算法基础集训营3 J 牛牛的宝可梦Go
    二阶差分
  • 原文地址:https://www.cnblogs.com/dazhu-secure/p/14099461.html
Copyright © 2011-2022 走看看