写在前面:
笔者是来自西部某非著名高校的一名Python初学者,现本着知识共享,资源共享的原则将我的个人笔记分享在此,本系列博客是我对Python学习的一系列知识和方法的汇总,同时希望能为后来者提供一份较为全面详细的Python入门资料参考
注:本笔记内引用了C站内部很多优秀博客内容,并在此基础上进行了带有个人理解的二次加工,如有侵权请联系笔者删改。
0.代码书写规则
一般每行一条语句:
a=12
b=3
print("Hello World")
一行有多句时,中间用分号给开:
a=12;b=3; print("Hello World")
一行写不下时,使用"\"表示续行:
print("Hello World",\
"Hello Python")
不能在标识符中间、常量中间等有意义的一个符号中间换行:
print("Hello \ #这样是错误的
World")
Ⅰ各种数据类型
组成程序的元素称为对象
计算机中使用不同的方式存储不同的数据, 一种存储形式及这种形式的数据的运算构成一种数据类型
数值:整数int、浮点数float、复数complex、逻辑型bool
字符串string:'python',"difficult",'''computer''' (str)
列表list; [1,2,3], ['a','b','abc']
元组tuple: (1,2,3), ('a','b','abc')
字典dictionary: {'name':'zhang','numb':'1001'} (dict)
集合: {1,2,3},{1,1,2,2,3,3} (set)
使用type()可以查看数据类型:(格式为type(表达式)或者type(变量名))
>>> type(2+3)
<class ‘int’>
>>> type("string")
<class 'str'>
>>> type(3+4j)
<class 'complex'>
>>> type(1.2)
<class 'float'>
>>> type(True)
<class 'bool'>
Ⅱ各种字面量(常量)
- 整数常量
- 浮点数常量
- 复数常量
- 布尔值常量(逻辑常量)(True or False)
- None常量(类似空集,不代表0)
- 字符串常量(python中不存在单字符数据,就算一个字符串中只包含一个字符在python中也叫字符串)(同等级别的双引号或单引号最好不要同时出现)
用单引号、双引号或三引号引起来的一串符号叫字符串常量(str)
>>> print('hello world')
hello world
>>> print("hello world")
hello world
>>> print("""hello world""") #三个单引号或三个双引号
hello world
Ⅲ转义字符
先来看一个例子:
print('Xi'an Jiaotong University')
SyntaxError: invalid syntax(前两个‘号相互识别使第二个引号后面是的数据不合规)
print('xi\'an Jiaotong university')
xi'an Jiaotong university(转义后)
不可显示字符:
\n 换行、\t 制表符(制表符使用后若前面的数据占满了制表位,则重开一个制表位并占满;若前面的数据没有占满制表位,则用空格占满这个制表位后面的内容)、\r 回车、 \f 换页 \‘ —单引号, \“——双引号 ,\\—反斜杠
例子:
>>>print("Hello\tworld \nHello \tXJTU ")
Hello world
Hello XJTU
Ⅳ变量和赋值运算
变量:
程序中使用符号表示数据,表示的数据可以改变
变量赋值:
使用赋值运算符: 变量名=表达式 将表达式的值赋给左边的变量
Python变量的特点:
使用前不需要先定义
变量类型由表达式值的类型确定
变量的类型可以改变
Ⅴ标识符
标识符: 程序中表示变量、函数、类名等的符号
命名规则:
1.包含字母、数字、下划线
2.以字母或下划线开头
3.区分大小写
4.不能使用保留的关键字,例如 if, else,int等
Ⅵ关键字
python3一共有三十三个关键字
False None True
and as assert break class continue
def del elif else except finally
for from global if import in
is lambda nonlocal not or pass
raise return try while with yield
Ⅶ运算符和表达式
操作数,运算数:参与运算的数据或标识符
表达式:由运算符将变量,常量连接起来的算式(a=3,a+b…)
常用的运算符:
1.算术运算: +、-、*、** 、/、//、%
2.关系(比较)运算: <、>、<=、>=、==、!=
3.逻辑运算:
名称 | 符号(带有运算量的表达式) | 描述 |
布尔与 | x and y | 若 x 为 False,x and y 返回 False,否则返回 y 的计算值 |
布尔或 | x or y | 若 x 为非 0,则返回 x 的值,否则返回 y 的计算值 |
布尔非 | not x | 若 x 为 True,返回 False;若 x 为 False,返回 True |
例子:
2>3 and 3>4
False
2<3 and 3>4
False
2<3 and 3<4
True
2<3 and 3+4
7
第二个例子:
表示x 在[0,1] :x<=1 and x>=0
表示x 不在[0,1] :not( x<=1 and x>=0 ) 或 x>1 or x<0
4.赋值运算符:
简单赋值运算符= 简单定义一个变量并赋值
加法赋值运算符+= a+=b等价于a=a+b
减法赋值运算符-= a-=b等价于a=a-b
乘法赋值运算符*= a*=b等价于a=a*b
……(加减乘除乘方整除取余都满足这样的规律)
注:这七个赋值运算符与其等价式子相比,它们属于原地运算,它们的运算都是在自己原本的数值上进行计算和修改的,不会消耗额外的内存。而其等价式的实质是(以加法赋值运算符为例)先计算a+b并给其分配一个存储空间,然后再赋值给a,这样做会消耗额外且不必要的存储空间和运算时间。所以更加推荐使用赋值运算符
(赋值运算符还可以与位运算结合,即:&=,|=,^=,~=,>> =,<< = )
海象运算符 := a:=1等价于声明定义a并赋值
注:这样做可以简化代码,提高效率
例子:
if a:=1 : print('yes')
*或者用老式的方法
a=1
if a :print('yes')
5.位运算符:
位运算是对数字的一种运算,其本质是将十进制数字转化为二进制数字进行操作,这里涉及计算机的原理,所以位运算非常快。所谓的“位”就是二进制01数字串中0和1的位置的变化,具体如下:
名称 | 符号 | 描述 | 简单示例 | 备注 |
按位与 | & | 二进制数字相应位置都为1则为1,否则为0 | print(2&3)#运算结果为2 | |
按位或 | | | 二进制数字相应位置都为0则为0,否则为1 | print(2&3)#运算结果为2 | |
按位异或 | ^ | 二进制数字相应位置都为0则为0,否则为1 | print(2^3)#运算结果为1 | |
按位取反 | ~ | 二进制数字相应位置都为0则为0,否则为1 | print(2^3)#运算结果为1 | 这个运算牵扯到原码反码和补码(所以运算结果是-3而不是1 |
左移运算符 | << | 二进制数字相应位置都为0则为0,否则为1 | print(2^3)#运算结果为1 | |
右移运算符 | >> | 二进制数字各位置右移,即n>>m=n//(2**m)(除以2的n次方后向下取整) | print(2^3)#运算结果为1 |
6.成员运算符:
成员运算符用来判断一个元素是否在一个序列中
(这个序列可以是字符串,列表,元组,字典,集合,数组)
符号 | 描述 | 示例 |
in | 如果该元素在序列中就返回True,否则返回 | print(’1’in’123’)#True |
not in | 如果该元素在序列中就返回False,否则返回True | print(’1’not in’123’)#False |
7.身份运算符:
身份运算符用于比较两个对象的存储单元(是否引自一个对象),而不是简单比较两个对象的类型或值
符号 | 描述 | 示例 |
is | 判断两个对象的标识符是否引用自一个对象,若是就返回True,否则为False,a is b 等价于id(a)==id(b) | print(1 is 1.0)#False |
is not | 判断两个对象的标识是否引用自一个对象,若是就返回False,否则为Ture | print([]is not [])#True |
注意:表格第三行第三列中的示例输出False的原因是:print([]is[])创建了两个列表,他们的存储单元不一样,所以不属于同一对象,输出False
8.运算符优先级:
乘方
>按位取反
>取除,整除,乘法,除法
>加法,减法
>左移,右移,按位与,按位或,按位异或
>比较运算符
>赋值运算符
>身份运算符
>成员运算符
>布尔非
>布尔与
>布尔或
以上即为本博客第一节全部内容