PEP8是Python对于代码的风格指南,给出了Python代码组成的编码约定。我们每个人都会形成自己的编码风格,但我们应尽量的参考此指南来编写Python代码,致力于代码更加规范化,这样才能显现出上文提到过的Python优点嘛。
简单说下几个重要的语法规范吧:
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个字符,但也有例外:
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人性化的方面之一,至于复杂的用法,我们后面讲字符串的时候再说。
顶级定义之间空两行, 方法定义之间空一行。
顶级定义之间空两行, 比如函数或者类定义. 方法定义, 类定义与第一个方法之间, 都应该空一行. 函数或方法中, 某些地方要是你觉得合适, 就空一行。
你敲别的错误还能肉眼检查出来,你敲几个中文符号.....呵呵,就等着变熊猫吧!!!!!
我们通过一个名字,指向一个人,或者指向一个具体的事物。这在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),如下图所示:
user= input(‘user: ‘) pwd = input(‘pwd: ‘) if user == "dazhu" and pwd == "123": print(‘ok‘) else: print(‘no‘)
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 表达式: 循环体
实例:
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‘)
Python的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语句用在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 """
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)
i = 0 while i < 10: if i == 3: pass print(i) i += 1
上面的代码示例中,pass语句这个代码块,意思就是我还没想好要干啥,但什么都不写程序不完整,无法执行,
原文:https://www.cnblogs.com/dazhu-secure/p/14099461.html