python知识整合(基础)

本文章内容的python版本默认为python3.x

1、注释

注释包括单行注释,多行注释,中文声明注释

1.1、单行注释

注释内容从#号到换行为止结束
语法格式:

# 注释内容

注释格式:
第一种

#请输入你的年龄
age=int(input("请输入你的年龄"))

第二种

age=int(input("请输入你的年龄"))        #请输入你的年龄

1.2、多行注释

在python中没有一个单独的多行注释标记,而是将注释内容包含在一对(‘’’…..’’’’)或者(”””…”””)
语法格式:

'''
注释内容1
注释内容2
......
'''

或者

"""
注释内容1
注释内容2
......
"""

当然可以利用单行注释实现多行注释,如

#注释内容1
#注释内容2
#....

1.3、中文编码声明注释

在python编写时,如果要指定字符编码,那么就需要在文件开头加上中文编码声明注释,来指定我们所需要的字符编码类型的中文编码,可以避免输出乱码
语法格式:

#-*- coding:编码-*-

或者

#  coding=编码

# coding=utf-8

==值得注意的是==,上面代码中的-*-是为了美观才加上的,没有任务特殊作用,故也可写为 # coding:编码

2、代码缩进

python中使用代码缩进来区分代码的层次感,这点与c等一些语言不一样。

缩进可以使用空格键或者tap键,通常一个缩进量默认为为4个空格(可以修改),一个tap键为4个空格,不过,建议使用空格进行缩进。

注意:python中对代码缩进的要求非常严格,同一个级别的代码块的缩进量必须是相同的,否则将出现语法错误(SyntaxError)

3、代码规范

3.1、编写规则

pthon采用的是PEP8的编码规范,PEP是python Enhancement Proposal的缩写,8为版本

使用import进行导入模块时,注意,一次只导入一个模块。
推荐写法:

import os
import request

不推荐写法:

import os , request

不要在行尾添加“;”,也不用将2条命令放在同一行,然后用“;”隔开。python中换行代表中一个语句的结束。

建议每行不超过80个字,如果超过用()连接,不推荐”\”
如,推荐

print("是多少级看过的力合股份客户广泛空间看过空间看过很快就卡。"
            "夫卡的风格看看吃饭大概开发地方")

不推荐

print("是多少级看过的力合股份客户广泛空间看过空间看过很快就卡。\
            "夫卡的风格看看吃饭大概开发地方")

特殊情况除外
1.导入模块语句过长
2.注释里的URL

可以使用空行增加代码的可读性,如·在定义方法之间空一行等等。

3.2.命名规范

1、模块名尽量短小,且全部小写,可以使用下划线,如

game_age

2、包名尽量短小,且全部小写,不推荐使用下划线,如

com.book

3、类名采用单词首写字母大即是Pascal风格。如

BorrowBook

4、内部模块采用下划线加Pascal风格命名,如

_BorrowBook

5、函数、类的属性和方法的命令规则和模块类似

6、常量命名时全部大写,使用可以使用下划线

注意:
使用单下划线开头的模块变量或函数是受保护的,在使用import*from语句从模块中不能导入。
使用双下划线开头的实例变量或方法是类私有的。

4、基本的输入与输出

4.1、print()函数

print()基础语法:

print("输出内容")

注意print()语句输出后会自动换行,如果要一次输出多个内容,且不换行,可以用英文的半角逗号进行分开。如

print("a","b")

输出结果为a b

输出时间

import datetime                          # 调用时间模块datetime
d=datetime.datetime.now()
print(d)                                 # 输出当前日期和时间
print(d.strftime('%Y-%m-%d %H:%M:%S'))   # 按格式输出当前时间
print(d.strftime('%I:%M %p'))      

print()不仅仅可以输出内容到屏幕还可以输出到指定文件

fp = open(r'F:\my.txt','a+')    # 打开文件,如果没有该文件将自动创建文件
print("hello world",file=fp)    # 输出到文件中
fp.close()                      # 关闭文件

4.2、input()函数

作用:input()在python中可以用来接收用户键盘输入的内容

如:

b = input("输入字符:")
print(b+"的ASCII码为",ord(b))

输出结果为:

输入字符:b            # b为我们输入的字符
b的ASCII码为 98

例子:根据输入的年份计算年龄

import datetime                                 # 调入时间模块datetime
imyear = input("请输入你的出生年份")               # 输入四位数的出生年份
nowyear = datetime.datetime.now().year          # 获取当前的年份
age = int(nowyear) - int(imyear)                # 计算年龄
print("你的年龄为"+str(age))

注意判断一个变量的类型可以使用type()函数

例子:查单个字符的ACSII码器

b = 12
while b>0:
    a = input("请输入字符:")
    print(a + "的ASCII码为", +ord(a))

5、保留字与标识符

5.1、保留字

保留字就是被赋予特定意义的一些单词,这些单词不能被当作变量、函数、类、模块和其他对象的名称来使用(否则会报invalid syntax错误),python中保留字是区分大小写的,

python中的保留字,这边全部列出
| and | as | assert | break | class |
| ——– | —— | —— | —– | —— |
| continue | def | del | elif | except |
| finally | for | from | False | global |
| if | import | in | is | lambda |
| nonlocal | or | pass | raise | return |
| try | True | while | with | yield |

当然如果我们忘记了也不用紧,可以通过2行代码查看保留字

import keyword
print(keyword.kwlist)

5.2、标识符

简单说标识符就是一个名字,用来识别变量、函数、类、模块和其他对象的名称。

命名规则
1、由字母、下划线和数字组成,并且第一个字母不能是数字。目前python中只允许使用ISO-Latin字符集中的字符A-Z和a~z.
2、不能使用Python中的保留字
例如,合法标识符

USSSS
name
name123
name_age

不合法标识符

4name             # 不能以数字开头
if                # 不能以保留字当作标识符
$name              #  不能使用特殊字符 空格、$、@、%等

3、区分字母大小写

4、以下划线开头的标识符具有特殊意义,要避免使用类似的标识符

以单下划线开头的标识符表示不能直接访问的类的属性,也不能太过from xxx import *导入

以双下划线开头的标识符表示类的私有成员

以双下划线开头和结尾的标识符是python中专用的标识,如int()表示构造函数

5、尽量避免使用汉字作为标识符,尽管这是被允许的。

6、变量

6.1、变量的命名规则与语法格式

变量的命名规则

1、变量名必须是一个有效的标识符

2、变量名不能使用python中的保留字

3、慎用小写字母 l 和大写字母O

4、应该选择有意义的单词作为变量名

语法格式

变量名 = value     #变量赋值
如
name = 12         # 创建变量name并赋值为12,类型为int
name = "John"     # 创建变量name并赋值为John,类型为str

注意,python中允许多个变量指向同一个值,但是他们对于的内存地址是否相同呢同,我们可以是内置函数id()来查看

例如

a = 2014
b = 2014
print("a的地址为",+id(a))
print("b的地址为",+id(b))

输出

a的地址为 2316677533424
b的地址为 2316677533424

7、基本数据类型

7.1、数字类型

1、整数
整数包括,十进制、八进制、十六进制

十进制不能以0开头

八进制在python3.x中必须以0o或0O开头,python2.x可以以0开头

十六进制必须以0x或0X开头

2、浮点数
浮点数表现形式,如2.7e2(科学计数法),1.1414

值得注意的是在使用浮点数进行计算时,可能会出现小数位数不确定的情况,如

a = 0.2
b = 0.1
c= a + b
print(c)

我们觉得输出0.3,但是实际输出0.30000000000000004,
所有语言都有这个问题,可以忽略对于的小数位

3、复数
在python中复数与数学中的复数在形式上完全一样

7.2、字符串类型

在python中字符串属于不可变序列
通常用单引号,双引号,三引号括起来。其中三引号内的字符序列可以分布在连续的多行中,而单引号,双引号内的字符序列必须在一行中。

注意如果需要表示复杂的字符串时可以进行引号的嵌套
如;

print(''''___' "_"***''')

输出

'___' "_"***

python中的字符串还支持转义字符
常见的转义字符如下表
| \ | 续行符 |
| —- | ———————————— |
| \n | 换行符 |
| \r | 回车符 |
| \0 | 空 |
| \t | 水平制表,用于横向跳到下一制表位 |
| \ “ | 双引号 |
| \ ‘ | 单引号 |
| \ | 一个反斜杠 |
| \f | 换页 |
| \0dd | 八进制数,dd表示字符,如\012代表换行 |
| \xhh | 十六进制,hh表示字符,如\x0a代表换行 |

注意在字符串定界符引号的前面加上R或r,将无视转义字符的存在。

print(r"hello\nworld")
print("hello\nworld")

输出

hello\nworld
hello
world

7.3、布尔类型

标识符True和False为布尔类型
True表示1,False表示0

注意布尔类型可以进行运算但是不建议进行运算

在python中所有对象都可以进行真假测试,只有以下几种情况为假其他都为真。
1、False或None

2、数值中的零,包括0、0.0、序数0

3、空序列,包括字符串,空元组、空列表、空字典

4、自定义对象的实例,对象的bool方法返回False或者len方法返回0.

7.4、数据类型转换

python是动态类型语言(也就是弱类型语言),不需要先声明变量类型,但在对变量进行操作时可能用到类型转换。

常用的类型转换函数
| 函数 | 作用 |
| ——————– | ————————————————– |
| int(x) | 将x转为整型 |
| float(x) | 将x转为浮点型 |
| complex(real[,imag]) | 创建一个复数 |
| str(x) | 将x转为字符串 |
| repr(x) | 将x转为表达式字符型 |
| eval(str) | 计算在字符串中的有效的python表达式,并返回一个对象 |
| chr(x) | 将整数x转为字符 |
| ord(x) | 将一个字符返回其所对应的整数值 |
| hex(x) | 将一个整数转化为一个16进制字符串 |
| oct(x) | 将一个整数转化为一个8进制字符串 |

8、运算符

8.1、算术运算符

加(+)、减(-)、乘(*)、除(/)、取余数(%)、取整除(//)、幂(**)

注意
1、在%中如果除数(第二个操作数)是负数,那么得到的结果也是负数

2、使用/或//时,除数不能为0,不然会出现错误

3、在python2.x中/符号计算的结果为整数,而在python3.x中为浮点数,如
3/2,在python2.x中为1,在在python3.x中为1.5

8.2、赋值运算符

常见的赋值运算符有=、+=、-=、*=、/=、%=、**=、//=等
在使用时,就是把=号右边的值赋值给左边的变量,也可以进行某些运算后再赋值给左边的变量。
如x-=y,就是等于x=x-y,
例子如下

x = 1
y = 2
x -= y
print(x)

输出x=-1

8.3、比较(关系运算符)

对表达式或者变量的结果进行大小、真假等比较,如果比较结果为真返回True,否则为False

比较运算符有:

>、 < 、==、!=、>=、<=

如果要判断一个变量是否在一个范围内可以使用 “ 值1<变量a<值2 ”

8.4、逻辑运算符

主要包括 and(逻辑与) or(逻辑或) not(逻辑非)
and和or 的结合方向是从左到右
not的不一样是从右到左

8.5、位运算符

位运算符是对二进制进行计算的,所以需要把要执行的数据转化为二进制数,然后再进行位操作。
python中位运算符有位与(&)、位或(|)、位异或(^)、位取反(~)、位左移(<<)、位右移(>>),

位运算符名称 算法
位与(&) 2个二进制数的对位都为1时才为1,否则为0 ,若2个操作数精度不同,则结果的精度与精度高的操作数相同
位或 2个二进制数的对位都为0时才为0,否则为1,若2个操作数精度不同,则结果的精度与精度高的操作数相同
位异或(^) 2个二进制数的对位相同时才为0,否则为1 ,若2个操作数精度不同,则结果的精度与精度高的操作数相同
位取反(~) 操作数中的1改为0,0改为1
位左移(<<) 将一个二进制操作数左移指定的位数,左边(高位段)溢出的位丢低,右边(低位段)的空位用0补充,位左移运算相当于乘以2的n次幂
右移(>>) 将一个二进制操作数右移指定的位数,右边(低位段)溢出的位用丢低,而在左边(高位段)的空位补充时,如果最高位为0,则在左侧补0,否则补1。位右移运算相当于除以2的n次幂

注意:
由于移位运算符运算速度很快,所有在程序中遇到表达式乘以或除以2的n次幂时可以用移位运算符来代替

8.6、运算符的优先级

python中运算符的运算规则是,优先级高的先执行,低的后执行,同一级的按从左往右进行操作。当然如果有括号,括号内的运算最先执行。在编写程序时尽量使用括号()来限定运算次序,以免运算次序出错
运算符的优先级(从高到低)
| 类型 |
| ———————————- |
| * |
| ~、+、- |
|
、/、%、// |
| +、- |
| <<、>> |
| ^ |
| 位或 |
| <、<=、>>、=!、=、==(比较运算符) |

9、流程控制语句

9.1、选择语句

1、最简单的if语句
语法结构如下:

if 表达式:
    语句块

注意在python中,当表达式的值为非零或者非空的字符串时。if语句也认为是条件成立(为真值)
2、if…else语句
语法结构如下:

if 表达式:
    语句块1
else:
    语句块2

技巧:
if…else语句可以使用条件语句进行简化,如

a = 1
if a > 0:
    b =a
else:
    b = -a
print(b)

可以简化为(就是使用条件表达式)

a = 1
b = a if a > 0 else -a
print(b)

3、if…elif…else语句
语法结构

if  表达式1:
    语句块1
elif 表达式2:
    语句块2
elif 表达式3:
    语句块3
...
else:
    语句块n

注意:if与elif都需要进行判断真假,而else不需要判断;else和elif都需要与if一起使用,不能单独使用

4、if语句的嵌套
if选择语句可以有多种嵌套方式,根据需要灵活运用。

if 表达式1:
    if 表达式2:
        语句块1
    else:
        语句块2

9.2、循环语句

循环体就是一组被重复执行的语句。
1、whie循环
while循环结构

while 条件表达式:
    循环体

值得注意的是Python不支持do〜while语法、while(无限循环)和break组合起来替换 do ~ while

n = 0
while True:         #无限循环...     
      print n
      n += 1
      if n == 10:
             break     #结束循环    

2、for循环
for循环结构

for 迭代变量 in 对象:
    循环体

如:

print("技术1+2+3+...+100结果为:")
result = 0
for i in range(101):
    result += i
print(result)

range()这个函数进行简单的说明

range(start,end,step)

start为计数的起始值,可以省略,省略就从0开始

end为计数的结束值,但是不包括该值,如range(5),会输出0,1,2,3,4,不可省略

step为计数的步长,就是2个参数之间的间隔,可以省略,省略就默认为1

小技巧
在python3.x中,如果让print语句输出的内容在一行上可以使用下面这个语句

print(result,end=' 分隔符 ')

for语句不仅可以循环数值,还可以逐个遍历字符串。

当然可以进行循环嵌套

9.3、跳转语句和pass空语句

1.break语句
break语句通常会结合if语句使用,在某种条件下跳出循环。如果是嵌套循环,那么break语句将跳出最内层的循环

如while语句中使用break语句

while 条件表达式1:
    执行代码
    if 条件表达式2:
        break

for语句中使用break语句

for 迭代变量 in 变量
    if 条件表达式:
        break

2.continue语句
break语句通常会结合if语句使用,在某种条件下跳出当次循环,进行下一次循环。如果是嵌套循环,那么break语句将跳出最内层的当次循环

如while语句中使用break语句

while 条件表达式1:
    执行代码
    if 条件表达式2:
        continue

for语句中使用break语句

for 迭代变量 in 变量
    if 条件表达式:
        continue

3、pass空语句
不做任何事,一般起到占位作用,为得是方便以后进行处理

for 迭代变量 in 变量
       if 条件表达式:
           语句块
       else:
           pass

10、数字运算类内置函数

函数名 作用
abs(x) 求绝对值,参数可以是整数,也可以是复数,复数就输出复数的模
oct(x) 将一个数字转为8进制字符串
hex(x) 将一个数字转为16进制字符串
chr(x) 返回整数x对应的ASCII的字符
ord(x) 返回x对应的ASCII的值
complex([real[,image]]) 创建一个复数
divmod(a,b) 分别取商和余数,整数和浮点数都可以
float(x) 将x转化为浮点数,如果没有参数返回0.0
int([x[,base]]) 将x转化为int型,base为进制
long([x[,base]]) 将x转化为long型,base为进制
pow(x,y[,z]) 返回x的y次幂
range(strat,stop[,step]) 产生一个序列,默认从零开始
round(x[,n]) 四舍五如=入
sum(iterable[,start]) 对集合求和
bin(x) 将整数x转化为二进制字符串
bool([x]) 将x转化为布尔类型
0%