Python基础知识

 

Python2与Python3的区别:  (这里只列举自己总结的几点)

Python2:

  源码不标准

  混乱

  重复代码过多

  默认使用的编码方式是ASCII码 # 解决对应编码问题 在首行增加 #-*-encoding:utf-8-*-

  继承顺序: 深度优先 #mro方法只在新势类中存在;super只在Python3中存在

  print可以不用加括号

  有range(),也有xrange();(xrange:生成器)

  raw_input() python2中的input。

 

Python3:

  统一标准,去除重复代码

  继承顺序:广度优先 Python2.7新式类和经典类共存 新式类要继承object

  print必须加括号

  只有range()

  input()

 


 

编码

ascii:包括:字母,数字,特殊字符(一个字节 8 位)。

Unicode:万国码 (两个字节 16 位)  升级为 (四个字节 32位)。

UTF-8: Unicode升级版 最少使用(一个字节 8位) 字母,数字,特殊符号 一个字节, 欧洲 使用(两个字节 16位) 中文 使用(三个字节 24 位)。

gbk:中文使用两个字节,英文使用一个字节。

 

ascii
A : 00000010 8位 一个字节

 

unicode
A : 00000000 00000001 00000010 00000100 32位 四个字节
中:00000000 00000001 00000010 00000110 32位 四个字节

 


utf-8
A : 00100000 8位 一个字节
中 : 00000001 00000010 00000110 24位 三个字节

 


gbk
A : 00000110 8位 一个字节
中 : 00000010 00000110 16位 两个字节
1.各个编码之间的二进制,是不能互相识别的,会产生乱码
2.文件的储存、传输,不能为unicode(只能是utf-8,utf-16,gbk,gb2312,ascii等)
python3中 str 在内存(不是存储在硬盘上)中是用unicode编码的。

 

 

bytes类型:

对于英文:
  str: 表现形式例如 s='alex'
  编码方式 01010101 unicode
  bytes: 表现形式例如 s=b'alex'
  编码方式: 000101010 utf-8 gbk...

对于中文:
  str: 表现形式例如 s='中国'
  编码方式 01010101 unicode
  bytes: 表现形式例如 s=b'x\e91\e91\e01\e21\e31\e32'
  编码方式: 000101010 utf-8 gbk...

 

str>>>bytes***
str.encode();# encode编码 str.encode('设置编码方式utf-8;utf-16;gbk...')
bytes>>>str***
bytes.decode()#decode编码 bytes.decode('设置编码方式utf-8;utf-16;gbk...')

 

 


 

Python中命名规范

  变量:变量就是将一些运算的中间结果暂存到内存中,以便于后续代码调用

  要求:

    1.必须由数字,字符,下划线任意组合,且不能以数字开头

    2.不能是Python中的关键字

    Python中的关键字:

    ["and","as","assert","break","class","continue","def","del","elif","else",

    "except","exec","finally","for","from","global","if","import","in","is",

    "lambda","not","or","pass","print","raise","return","try","while","with","yield"]

    3.变量具有可描述性

    4.不能是中文

 

  注释:方便自己方便他人理解代码的注释,程序不运行

    单行注释: #

    多行注释:  '''被注释内容''' 或者 """被注释内容"""

 


 

基础数据类型初始

  type() # 用来检测数据类型

  int(数字型):例如1,2,3,4,5.....

    数字型可以进行数字运算 例如: "+","-","*","/",**(乘方),%(取余).....

    str >>> int: int(str) str必须是数字组合而成的

    int >>> str: str(int)

 

  str(字符串): Python中凡是用引号引起来的都是字符串

    字符串的操作:

      str + str: 字符串的拼接

      str * int: 相乘重复输出

 

  bool(布尔值): bool型只有True或者False

    bool>>>int: Ture=1 False=0

    int>>>bool: 除0,None,"",以外都为True

 

用户交互: input()

  

#定义一个变量 i
i = input("提示输入")
#1.等待输入
#2.将你输入的内容赋值给了前面的变量
#3.input出来的数据类型全部都是str(str是字符串)

 


if判断语句

if<条件判断1>:
    <执行1>
elif<条件判断2>:
    <执行2>
elif<条件判断3>:
    <执行3>
else:
    <执行4>

 


 

for循环

for i in x:#循环就是把每个元素代入变量x,然后执行缩进块的语句
    print(i)

 

补充

索引序列:
  enumerate('内容',start='第一个开始的序号') 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

 


 

 while循环

while 条件:  # 只要条件满足就不断循环,如果条件不满足则跳出循环;
if 条件: break  # 满足if条件执行break跳出循环;
if 条件: continue  #  满足if条件则跳过本次循环进入下一轮循环;
while 条件: else  #break跳出循环则不执行else 否则不满足while条件则执行else内容

 


 

 格式化输出  

"%"的妙用

%; # 格式化字符串
%d;  # 格式化整数
%f;  # 格式化浮点数,可以指定小数点后的精度
%s;  # 格式化字符串 
%x;  # 格式化无符号十六进制数
%X;  # 格式化无符号十六进制数(大写)
%c;  # 格式化字符及其ASCII码
%u;  # 格式化无符号整形
%o;  # 格式化无符号八进制数
%e;  # 用科学计数法格式化浮点数
%E;  # 作用同%e,用科学计数法格式化浮点数
%g;  # %f和%e的简写
%G;  # %f和%E的简写
%p;  # 用十六进制数格式化变量的地址

Demo:
    i = "帅哥"
   print("我是一个%s"%i)
 输出:
    "我是一个帅哥"

 

"format"的妙用

str.format()
# 1.按照顺序 {}{}{}  str.format("1","2","3")
# 2.按照索引 {0}{1}{2}{0} str.format("0","1","2")
# 3.按照变量 {s1}{s2}{s3}{s1} str.format(s1=变量1,s2=变量2,s3=变量3)

 

Ps: Python2.6新加入的format语法支持;Python新版本推荐使用format

 

***"%"与"format"的区别

  %有局限性 例如传一个元祖就会报TypeError 像此类格式化的需求我们需要写成'%s'%(type,)

  format新特性 Python3.6加入f-strings 更方便 例如:

    f'Str{变量}Str{变量}' 可直接替换完成

 

 


 

转义符

  Python转义字符:

    r"" ;  字符串内容全部真实含义(转义)

    \(在行尾);续行符

    \; 转义符

    \a; 响铃

    \b;退格

    \e;转义

    \000; 空

    \n; 换行

    \v; 纵向制表符

    \t; 横向制表符

    \r; 回车

    \f; 换页

    \oyy; 八进制数,yy代表的字符,例如: \o12代表换行

    \xyy; 十六进制数,yy代表的字符,例如: \x0a代表换行

    \other; 其他的字符以普通格式输出

 


 

运算符

算数运算:

运算符   描述                       实例

+     加-两个对象相加                  a + b

-     减-得到复数或是一个数减去另一个数         a -  b

*     乘-两个数相乘或是返回一个被重复若干次的字符串   a *  b

/     除-x除以y                     b / a

%    取模-返回除法的余数               b %  a         

**    幂-返回x的y次幂                   a ** b 

//    取整除-返回商的整数部分              a // b

 

比较运算:

运算符           描述

==             等于-比较对象是否相等

!=              不等于-比较两个对象是否不相等

<>             不等于-比较两个对象是否不相等 

>               大于-返回x是否大于y

<               小于-返回x是否小于y

>=             大于等于-返回x是否大于等于y 

<=             小于等于-返回x是否小于等于y

 

赋值运算:

运算符     描述             实例

=       简单的赋值运算符       c=a+b

+=      加法赋值运算符 c+=a     等效 c=c+a 

-=      减法赋值运算符 c-=a       等效c=c -a 

*=      乘法赋值运算符 c*=a      等效 c=c *a  

/=      除法赋值运算符 c/=a       等效 c=c/ a

%=      取模赋值运算符 c%=a     等效 c=c%a 

**=      幂赋值运算符 c**=a       等效 c=c**a

//=        取整赋值运算符 c//=a       等效 c=c//a

 

逻辑运算:

运算符       描述

and       布尔"与"-如果x为True, x and y 返回y

or        布尔"或"-如果x为True, x or y 返回x值 

not        布尔"非"-如果x为true,返还x为False

in         #成员运算符-如果字符串中包含给定字符返回True

not in       #成员运算符-如果字符串中不包含给定的字符返回 True

 

逻辑运算优先级

()>>>not>>>and>>>or

 

 

 

补充: 位运算

 

"&" 与运算

  demo: 5&2 = 0

  0101 

  & 0010 

  =  0000

 

"|" 或运算

  demo:5|2 = 7

  0101

  |   0010

  = 0111

 

"~" 非运算取反

 

"<<" 左移运算符  x << 1

  # 相当于x*2

 

">>" 右移运算符 x >> 1

  # 相当于x//2

 

"^" 异或运算符

  11>0 00>0 01>1 10>1  

  demo:5^3 = 6

  0101

  ^  0011

  =  0110

 

补充: 

  # =(赋值) 用的是同一个地址 如果改变一个另一个也改变
  # == (比较值是否相等)。
  # is (比较,比较的是内存的地址)。
  # id (内容,打印出内存地址)。

 

posted @ 2019-10-31 12:44  Binb  阅读(331)  评论(0编辑  收藏  举报