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语句这个代码块,意思就是我还没想好要干啥,但什么都不写程序不完整,无法执行,

  • 相关阅读:
    'Undefined symbols for architecture i386,clang: error: linker command failed with exit code 1
    The codesign tool requires there only be one 解决办法
    XCode iOS project only shows “My Mac 64bit” but not simulator or device
    Provisioning profile XXXX can't be found 的解决办法
    UIView 中的控件事件穿透 Passthrough 的实现
    Xcode4.5出现时的OC新语法
    xcode 快捷键(持续更新)
    打越狱包
    php缓存与加速分析与汇总
    浏览器的判断
  • 原文地址:https://www.cnblogs.com/dazhu-secure/p/14099461.html
Copyright © 2011-2022 走看看