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

原文地址:https://www.cnblogs.com/dazhu-secure/p/14099461.html