Python语言基础
1.Python语法特点
注释:
单行注释:#
#注释
单行注释分为两种情况,
例:第一种
#用于计算bim数值
bim=weight/(height*height)
第二种:
bim=weight/(height*height)#用于计算bim数值
注:1.添加注释时一定要有意义,即注释能充分解释代码块的功能及用途
2.注释可以出现在代码的任意位置,但不能分隔关键字和标识符
3.注释除了可以解释代码的功能及用途,也可以临时注释不想执行的代码,也可以在后期通过选择注释和取消注释来操作要执行的步骤
多行注释::'''aaa'''或 """aaa"""
多行注释通常用来为Python文件、模板、类、或者函数等添加版权、功能等信息
注:在Python中,三引号("""aaa""")或('''aaa''')是字符串的定界符。如果三引号作为语句的一部分出现时,就不是注释,而是字符串,这一点要区分。
例:注释
'''
@功能:求100以内的和
无返回值
'''
例:字符串
print('''100以内奇数和为''')
中文编码声明注释:#-*- coding:编码(utf-8)-*-或者#coding=编码(utf-8)
该注释主要是为了解决python2.X中不支持直接写中文的问题,虽然Python3.X中该问题已经不存在了,但是为了规范页面编码同时方便其他程序员及时了解文件所用编码建议在文件开头添加。
如果编码采用UTF-8编码,编码信息设置成utf-8,如果是采用GBK编码,则设置为gbk或cp936
#-*- coding:utf-8-*- #coding=utf-8
以上两种方式均可,-*-没有任何特殊作用,主要为了美观
代码缩进:
Python不像其他语言采用的是{}分隔代码块,Python采用代码缩进和“:”区分代码层次。
方法:缩进可以使用四个空格或者一个<Tab>键来实现。通常情况下建议使用四个空格键,如果使用Tab建议先设置好Tab键的缩进量。
注意:1.在Python中,对于类定义、函数定义、流程控制语句、异常处理语句等,行尾的冒号和下一行的缩进表示一个代码块的开始,而缩进结束,则表示一个代码块的结束。
2.Python对代码缩进要求异常严格,同级别代码块的缩进量必须相同,如果采用不合理的代码缩进,将会抛出SyntaxError异常bug。
编码规范:
编写规则:采用PEP8作为编码规范
1.每个import语句只能导入一个模块,尽量避免一次导入多个模块
正确导入:
import os
import re 不推荐导入:
import os,re
2.不要在尾行添加 ' ; ',也不要用分号将两条命令放到同一行。
3.建议每行不超过80个字符,如果超过建议使用“( )”将多行内容隐式的链接起来,而非使用反斜杠 “ \”进行连接。
a=('噫吁嚱,危乎高哉!蜀道之难,难于上青天!蚕丛及鱼凫,开国何茫然!尔来四万八千岁,不与秦塞通人烟。西当太白有鸟道,'
'可以横绝峨眉巅。地崩山摧壮士死,然后天梯石栈相钩连。上有六龙回日之高标,下有冲波逆折之回川。') a='噫吁嚱,危乎高哉!蜀道之难,难于上青天!蚕丛及鱼凫,开国何茫然!尔来四万八千岁,不与秦塞通人烟。西当太白有鸟道,\
可以横绝峨眉巅。地崩山摧壮士死,然后天梯石栈相钩连。上有六龙回日之高标,下有冲波逆折之回川。' 不过有两种情况除外
#导入模块的语句过长
#注释里面的URL
4.使用必要的空行可以增加代码的可读性。一般在*定义(如函数或者类的定义)之间空两行,方法定义之间空一行。另外用于分隔某些功能位置也可以空一行
5.通常情况下,运算符两侧、函数参数之间、" ,"两侧建议使用空格进行分隔。
6.应该避免在循环中使用 "+" 和 "+=" 运算符累加字符串。因为字符串不可变,字符串建议使用join()方法进行连接。
7.适当使用异常处理结构,提高程序容错率。但不能过多依赖异常处理结构,适当的显示判断还是有必要的。
命名规范:
1.模块名尽量短小,并且全部使用小写字母,可以使用下划线分隔多个字母,增加可读性。
2.包名尽量短小,并且全部使用小写字母,不推荐使用下划线。
3.类名采用首字母大写形式。例Class
4.模块内部的类采用下划线 " _"+Class的类名组成。
5.函数、类的属性和方法的命名规则同模块类似,采用全部小写字母,多个字母之间使用下划线 " _" 分隔。
6.常量命名时全部使用大写字母,也可以使用下划线。
7.使用单下划线 "_" 开头的模块变量或者函数是受保护的,在使用from XXX import *语句从模块中导入时这些变量或者函数不能被导入
8.使用双下划线 " __" 开头的实例变量或者方法是私有类。
2.保留字与标识符
保留字是Python中已经被赋予特定意义的单词,开发程序时不能使用这些保留字作为变量、函数、类、模块和其他对象名称使用。
and | as | assert | break | class | continue |
def | del | elif | else | except | finally |
for | from | False | global | if | import |
in | is | lambda | nonlocal | not | None |
or | pass | raise | return | try | Ture |
while | with | yield |
注:1.Python中所有的保留字是区分大小写的。例如if
2.如果使用了保留字,系统会报错,“ invalid syntax”(无效语法)
3.Python中可以引入keyword模块查看保留字
import keyword
keyword.kwlist
标识符:简单理解为名字。
标识符命名规则如下:
1.由字母,数字、下划线组成。但第一个字符不能是数字。
2.不能使用保留字。
3.区分大小写。两个相同单词,但字母大小写不同,所代表的就不同,是完全两个独立的个体。
4. Python中以下划线开头的标识符有特殊意义,一般要避免使用相类似的标识符。
3.变量
在Python中变量可以理解成标签。直接赋值即可创建各种类型的变量,但是变量的命名并不是任意的,遵循以下几条:
1.变量名必须是一个有效的标识符。
2.变量不能使用Python中的保留字。
3.慎用小写字母I和大写字母O。
应选择有意义的单词作为变量名。
语法格式为:
变量名 = value
count = 1024
注:1.在Python中,允许多个变量指向同一个值!
2.常量就是在程序运行过程中,值不能改变的量,但是在实际项目中首次赋值之后,还是可以被其他代码修改。
4.基本数据类型
1.数字类型:整数(int)、浮点数(float)、复数(略)
整数:用来表示整数数值,及没有小数部分的数值,包括 正整数、负整数,0,其类型包括:十进制、八进制、 十六进制、二进制
十进制整数:其表现形式比较常见,例如:999、1、 0、-3等
八进制整数:其形式是由0~7组成,进位规则“逢八进一”,且是由0o/0O开头的数
十六进制整数:由0~9,A~F组成,进制规则“逢十六进一”,并且由0x/0X开头的数
二进制整数:是由0和1组成,进位规则“逢二进一”
注:1.在Python2.X中,如果输入的整数比较大时,Python会自动在后面加上字母L。
2.不能以0作为十进制的开头。
3.在Python3.X中,八进制数,必须以0o/0O开头,但在Python2.X中八进制数可以是0开头
4.十六进制数必须是以0x或者0X开头
浮点数:是由整数部分和小数部分组成,主要是用于处理包含小数的数。
注:在使用浮点数计算时,可能会出现小数位不确定的情况
2.字符串类型:
字符串就是连续的字符序列,可以是计算机所表示的所有一切能表示的字符集合。属性不可变,通常使用单引号“ ' ' ”、双引号“ " " ”、或者三引号“ ''' ''' ”或“ """ """ ”括起来。其形式语言没有差别,但单引号和双引号必须在同一行,三引号内的字符序列可以分布在连续多行上。
name = '小明 '
name ="小明"
name_work =''' 噫吁嚱,危乎高哉!蜀道之难,难于上青天!蚕丛及鱼凫,开国何茫然!尔来四万八千岁,不与秦塞通人烟。''' #注:字符串的开头和结尾使用的引号必须一致,如遇到比较复杂的字符串时,还可以嵌套使用引号。
例:'python 字符串通常使用单引号“ ' ' ”
字符串的转义字符:转义字符就是指用反斜杠“\”对一些特殊字符进行转义,
\ -------续行符 \n-------换行符 \0 -----空 \t -----水平制表符,用于横向跳到下一制表位 \'' -----双引号 \' -----单引号 \\-----一个反斜杠 \f-----换页 \0dd-----八进制数,dd代表字符,如\012代表换行 \0xhh-----十六进制数。hh代表字符,如\x0a代表换行
注:如果在字符串界定符引前加上字母r或者R,那么该字符串将原样输出,其中转义字符将不转义。
print('得之我命')
得之我命
print(r"得之我命")
"得之我命"
3.布尔类型
布尔类型主要用来表示真,假。在Python中,标识符为Ture和False的值,其数值可以转化成Ture表示1、False表示0.
Python中布尔值可以进行数值运算,例如False+1 结果=1,但不建议这样运算。
注:Python中布尔值为假的情况, False、 None;
数值中的0(包括0、0.0、虚数0);
空序列:空字符串" "、空元组( )、空格列表[ ]、空字典{ };
自定义对象实例,该对象的__bool__方法返回为False或者__len__方法返回为0.
4.数据类型转换
虽然Python是一个动态类型的语言(弱类型语言),不需要提前声明变量,但有时仍然需要类型转换。
常用类型转换函数及其作用:
int(x)-----将x转化成整数类型 float(x) -----将x转化成浮点类型 complex(real [,imag])-----创建一个复数 str(x)-----将x转化成字符串 repr(x)-----将x转化成表达式字符串
eval(str)-----计算在字符串中有效的Python表达式,并返回一个对象>>>x = 7 >>> eval( '3 * x' ) 21 chr(x)-----将整数转化为一个字符 ord(x)-----将一个字符转化成它对应的整数值
hex(x)-----将整数x转化为一个十六进制字符串 oct(x)-----将一个整数x转化为一个八进制字符串
5.运算符
1.算术运算符
算术运算符是处理四则运算的符号:
1.+ ---- 加
2.- ----减
3.* ----乘
4./ ----除
5.% ----求余 ,即返回除法的余数,7%2 得1
6.//----取整除,即返回商的整数部分
7.**----幂,机返回X的y次幂
注:1.在算术运算符中使用%求余,如果除数(第二个操作数)是负数,则取得的结果也一样是个负值。
2.使用除法(/或//)运算符和求余运算符时,除数不能为0,否则将会出现异常
2.赋值运算符
主要用来为变量等赋值,使用时,可以直接把基本赋值运算符“=”右边的值赋值给到左边的变量,也可以进行某些运算之后再赋值给左边变量。
运算符: 运算符
1. = ----简单的赋值运算 : x=y ---> x=y
2. += ----加赋值: x+=y ---> x= x+y
3. -= ----减赋值: x-=y ---> x= x-y
4. *= ----乘赋值: x*=y ---> x= x*y
5. /= ----除赋值: x/=y ---> x= x/y
6. %= ----取余赋值: x%=y ---> x= x%y
7. **= ----幂赋值: x**=y ---> x= x**y
8. //= ----取整除赋值: x//=y ---> x= x//y
注:=和==容易混淆,且是编程中最常见的错误之一
3.比较(关系)运算符
比较运算符,也称为关系运算符,用于对变量或者表达式的结果进行大小、真假等比较,如果为真返回True,如果为假,返回False。通常在条件语句中进行判断比较。
运算符:1. > ----大于 'a'>'b' ---->False
2. < ----小于 14>16 ---->True
3. == ----等于 'a'=='a' ---->True
4. != ----不等于 'a'!='c' ---->True
5. >= ----大于等于 '57'>='33' ---->True
6. <= ----小于等于 '57'>='33' ---->False
注:Python中,如果需要判断一个变量是否介于两个值之间时,可以采用"值1<变量<值2"的形式。
4.逻辑运算符
逻辑运算就是对真和假两种布尔值进行运算,运算后的值任然是一个布尔值。运算符包括,and(逻辑与)、or(逻辑或)、not(逻辑非)
运算方向:
1. and c and b 从左往右
2. or c or b 从左往右
3. not not b 从右往左
使用逻辑运算符进行逻辑运算结果:
表达式1 表达式2 表达式1 and 表达式2 表达式1 or表达式2 not表达式1
True True True True False
True False False True False
False False False False True
False True False True True
注:X or Y , 如果X为0,则返回Y,反之则返回X,
X and Y 如果X为0,则返回X,反之则返回Y。
5.位运算符
位运算符是把数字当作二进制数来进行计算,因此,需要先将要执行的运算转化成二进制,然后才能执行运算。位运算符有:位与&、位或 | 、位异或 ^、取反~、左移位<< 、右移位>>。
1.位与运算 :&
运算法则:两个操作数据的二进制表示,只有对应数位都是1时,结果数位才是1,否则为0.如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。
0000 0000 0000 1100
&0000 0000 0000 1000
-----------------------------
0000 0000 0000 1000
2.位或运算 :|
运算法则:两个操作数据的二进制表示,只有对应数位都是0时,结果数位才是0,否则为1 ,如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。
0000 0000 0000 0100
| 0000 0000 0000 1000
-----------------------------
0000 0000 0000 1100
3.位异或运算:^
运算法则:当两个操作数据的二进制表示相同(同时为1或者同时为0)时,结果数位为0,否则为1 ,如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。
0000 0000 0001 1111
^ 0000 0000 0001 0110
-----------------------------
0000 0000 0000 1001
4.位取反运算:~
运算法则:就是讲操作数中对应的二进制数1改为0,0修改为1,
~ 0000 0000 0000 0110
-----------------------------
1111 1111 1111 1001
5.左移位运算符 <<
运算法则:是将一个二进制操作数向左移动指定的位数,左边(高位段)溢出的位被丢弃,右边(低位段)的空位用0补充,左移位运算相当于乘以2的N次幂
例:int类型数据48对应的二进制数为:00110000,将其左移一位,可以得出(00110000<<1)= 01100000,转化为十进制为96(48*2)即2的1次幂
6.右移位运算符 >>
运算法则:是将一个二进制操作数向右移动指定的位数,右边(低位段)溢出的位被丢弃,如果左边(高位段)是0(正数),右边的空位用0补充;如果左移(高位段)是1(负数),左侧空位填入1 。位运算相当于除以2的N次幂
6运算符的优先级
优先级越高先执行,优先级低的运算后执行,同一优先级的操作按照从左到右的顺序进行的。
运算符级别:
1. ** --->幂
2. ~、+、- --->取反、正号、负号
3. *、/、%、// --->算术运算符
4. +、- --->算术运算 (加、减)
5. <<、>> --->位运算中的左移、右移
6. & --->位运算中的位与
7. ^ --->位运算中的取反
8. | --->位运算中的异或
9. <、<=、>、>=、!=、== --->比较运算
注:在编写程序时尽量使用括号“( )”来限定运算次序,避免运算次序发生错误。
6.基本输入与输出
1.使用input()函数输入
在Python中使用input()内置函数,接收用户键盘输入
value = input("请输入您要输入的内容")
2.使用print()函数输出
在Python中,使用内置函数print()可以将需要输出的结果输出到显示台上
a = 4 #变量a, 值为4
b = 6 #变量b, 值为6
print(6) #输出数字6
print(a*b) #输出变量a*b的结果24
print(a if a>b else b) #输出条件表达式的结果6
print("Python是世界上最好的编程语言") #输出字符串"Python是世界上最好的编程语言"
注意:1.输出内容可以为数字和字符串(字符串需要使用引号引起来)
2.在Python中,默认情况下,一条print()语句输出后会自动换行,如果想要一次输出多个内容,而且不换行,可以将要输出的内容使用英文半角的逗号分隔。print(a,b)
Python2.X与Python3.X的区别:
1.在Python3.X中,八进制数,必须以0o/0O开头,但在Python2.X中八进制数可以是0开头
2.中文编码声明注释:#-*- coding:编码(utf-8)-*-或者#coding=编码(utf-8)该注释主要是为了解决python2.X中不支持直接写中文的问题,虽然Python3.X中该问题已经不存在了,但是为了规范页面编码同时方便其他程序员及时了解文件所用编码建议在文件开头添加。
3.在Python2.X中,除法运算符(/)的执行结果与Python3.X的不一样,如果操作数为整数,则结果将截取整数。而在Python3.X中,计算结果为浮点数。例如:7/2,在Python2.X中结果为3,在Python3.X中结果为3.5.
4.在Python2.X中,想让print语句输出的内容在一行上显示,可以在后面加上逗号。但Python3.X中使用print()函数是不能直接加上逗号,需要加上"end = '分隔符'",并且该分隔符为一个空格,如果连接输出不需要分隔符隔开,也可以不加分隔符。