Python3基本语法-xmind图

常量/变量

1. 常量:一旦赋值就不可再改变。不能对它重新赋值。python不存在常量
2. 字面常量:一个单独出现的量,未赋值给任何变量或常量
3. 变量:

i=3
print(i)
3

类型系统

1. python是动态类型语言:指的是变量可以重新赋值为其他类型

In [5]: i=4;type(i)
Out[5]: int
In [6]: i='';type(i)
Out[6]: str

2. python是强类型语言:强类型指的是不同类型之间不能相互计算

In [7]: 4+''
TypeError: unsupported operand type(s) for +: 'int' and 'str'

3. python中一切都是引用,所以一切都是指针

4. python的基本类型:

(1)int整型:python里面可以说int型没有溢出,而只受限于物理内存

In [8]: i=1000000000000000000000000000000000000000000000000000000000000000000000
...: 000000000000000000000000000000000000000000000000000000000000000000000000
In [9]: type(i)
Out[9]: int
In [10]: i**2
Out[10]: 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

(2)float浮点型:(py3里面没有double类型),浮点型会损失精度

In [11]: type(1.0)
Out[11]: float
In [12]: type(3.14159)
Out[12]: float

(3)bool布尔型:True Flase
(4)none:None指的是没有指向任何内存

运算符

1. 算术运算符:

# 算术运算符只能对int和float运算,int会隐式转换成float
# + 加
In [5]: 1+1.0
Out[5]: 2.0 # - 减
In [6]: 1-2
Out[6]: -1 # * 乘
In [11]: 2*3
Out[11]: 6 # / 自然除(结果都是float型)
In [1]: 3/2
Out[1]: 1.5
In [2]: type(3/2)
Out[2]: float # // 取整除(结果取整故都是int型)
In [3]: 3//2
Out[3]: 1
In [4]: type(3//2)
Out[4]: int # ** 求幂
In [12]: 2**3
Out[12]: 8 # % 取模
In [19]: 4%3
Out[19]: 1

2. 比较运算符

# 比较运算返回值都是bool型
# > 大于
# < 小于
# == 等于
# != 不等于
# >= 大于等于
# <= 小于等于
In [20]: type(1>2)
Out[20]: bool In [21]: 1>2
Out[21]: False In [22]: 1<2
Out[22]: True In [23]: 1!=2
Out[23]: True

3. 逻辑运算符

# or  或
# and 且
# not 非
# 逻辑运算符的操作数与返回值都是bool类型
In [24]: True or False
Out[24]: True In [25]: True and False
Out[25]: False In [26]: not True
Out[26]: False In [27]: type(True or False)
Out[27]: bool # 所有参与逻辑运算的操作数都会隐式转换成bool类型,其中0和None会隐式转换为False、非0则隐式转换为True
In [31]: 0 or 1 //0=Flase or 1=True
Out[31]: 1 //非0=True # 逻辑运算的短路操作:从左到右执行,当左边的计算已经可以直接得出结果时,将停止计算,提前返回
In [32]: def true():
print('True')
return True
In [34]: def false():
print('False')
return False In [35]: true() or false()
True //or运算时左边为true已可以得到结果,故只执行了true()
Out[35]: True In [36]: false() and true()
False //and运算时左边为false已可以得到结果,故只执行了false()
Out[36]: False In [37]: false() or true() //左边还不能得到结果的时候,true()和false()都执行了
False
True
Out[37]: True

4. 成员运算符

#用于判断一个元素是否在容器中(和集合类型有关)
# in 在
# not in 不在
In [43]: 3 in [1,2,3,5]
Out[43]: True In [46]: 'a' not in 'love python'
Out[46]: True In [47]: 10 in (0,2,8,11)
Out[47]: False In [44]: 10 in {0,2,8,11}
Out[44]: False # 集合的成员运算远高于其他线性结构做成员运算 # 列子1:
In [49]: lst=list(range(1000000));
In [50]: s=set(range(1000000)); In [51]: %%timeit
...: -1 in lst
100 loops, best of 3: 13.1 ms per loop In [52]: %%timeit
...: -1 in s
The slowest run took 28.53 times longer than the fastest. This could mean that an intermediate result is being cached.
10000000 loops, best of 3: 44.6 ns per loop #例子2:
In [53]: lst2=list(range(100))
In [54]: s2=set(range(100)) In [55]: %%timeit
...: -1 in lst2
1000000 loops, best of 3: 1.36 us per loop In [56]: %%timeit
...: -1 in s2
The slowest run took 26.28 times longer than the fastest. This could mean that an intermediate result is being cached.
10000000 loops, best of 3: 46.3 ns per loop # 通过下面的例子我们可以得到如下结论:
# 做成员运算时,
# *集合的时间复杂度是O(1),其效率和集合的规模无关 ==>当规模大时我们转化为集合来做运算效率会高很多
# *线性结构的复杂度是O(n),其效率和列表的规模有关 ==>当规模小时其实线性结构的效率未必不会更好

5. 身份运算符

# 面向对象

6. 位运算符

# 位运算符是直接操作二进制的
# <<
# >>
# &
# |
# ^

7. 赋值运算符

# 赋值运算符是可以和算术运算符、比较运算符、位运算符一起使用
In [12]: a=1+2;print(a);type(a)
3
int In [13]: a=1>2;print(a);type(a)
False
bool In [14]: a=True or False;print(a);type(a)
True
bool

8. 运算符优先级

算术运算符>比较运算符>逻辑运算符
可以通过使用括号来改变优先级

程序结构

1. 顺序结构

2. 分支结构

(1)单分支                                                                                              (2)双分支

                            

(3)多分支

# 单分支    
开始
if 条件:
操作
结束
In [1]: a=5
In [2]: if a<10:
print('a less then 10') # 双分支双分支结构里,永远只有一个分支会被执行
开始
if 条件:
操作1
else:
操作2
结束
In [3]: a=5
In [4]: if a<10:
print(a,'less then 10')
else:
print(a,'great then 10') # 多分支多分支结构里,永远只有0个或1个分支会执行条件只能是bool类型或者是可以隐式转化为bool类型的
In [5]: a=50
In [6]: if a<10:
print('a<10')
elif a<20:
print('a<20')
elif a<30:
print('a<30')
else
print('a>30')

3. 循环

(1)while循环                                                            (2)for in循环

                      

# 一定要有某种机制修改调制使其退出循环,通常是在循环体里修改条件
# for in 循环里永远不要修改可迭代对象()
# 如何选择使用哪种循环?
对已知的可迭代对象做遍历,选择for in
对未知的条件做循环,选择while
# while循环
开始
while 条件:
操作
结束
In [18]: i=0
In [19]: while i<10:
print(i)
i+=2
0
2
4
6
8 # for in循环
开始
for 元素 in 可迭代对象:
操作
结束
In [62]: for i in range(0,10,2):
print(i) 0
2
4
6
8

4. 提前终止与跳过

# break 和 continue只针对最近的一层
# break和continue只能用在循环里 # break
In [66]: for i in range(0,3):
...: for j in range(0,5):
...: if j>2:
...: break
...: print('i={},j={}'.format(i,j))
...:
i=0,j=0
i=0,j=1
i=0,j=2
i=1,j=0
i=1,j=1
i=1,j=2
i=2,j=0
i=2,j=1
i=2,j=2 # continue
In [67]: for i in range(0,3):
...: for j in range(0,5):
...: if j!=2:
...: continue
...: print('i={},j={}'.format(i,j))
...:
i=0,j=2
i=1,j=2
i=2,j=2

5. else子句(python中else可以和循环语句一起使用)

# 当循环没有被break(被中断/提前退出)时,会执行else子句
In [68]: for i in range(0,5):
...: pass
...: else:
...: print('not exit')
...:
not exit In [69]: for i in range(0,5):
...: continue
...: else:
...: print('not exit')
...:
not exit In [70]: for i in range(0,5):
...: break
...: else:
...: print('not exit')
...:

[PY3]——基本语法的更多相关文章

  1. [PY3]——内置数据结构(6)——集合及其常用操作

    集合及其常用操作Xmind图          集合的定义 # set( ) # {0,1,2} //注意不能用空的大括号来定义集合 # set(可迭代对象) In [1]: s=set();type ...

  2. python简介

    python起源 作者Guido van Rossum,荷兰人 在创建python之初,1989年12月份,Guido只是想用编程来打发圣诞的闲暇时光.Guido也希望能有一门语言既能够像C语言那样, ...

  3. [py]编码-强力理解版

    py编码骨灰级总结 思路: python执行py文件步骤--py2/3定义变量时unicode差异 1,py2 py3执行py文件的步骤 2,py2 定义变量x='mao' 1.x='mao', # ...

  4. selenium自动化(一).........................................搭建环境

    一  环境搭建 安装python(建议使用py3) py2和py3在语法上会有一定的差别 第三方插件逐步转向py3,很多py2的插件已经停止维护 本教程的所有代码基于py3 安装selenium插件 ...

  5. python全栈测试之路-py3基础:基础的常用语法知识

    python基础链接 python3速查参考- python基础 2 -> if语句应用 + while循环应用 https://www.cnblogs.com/wuzhiming/p/7795 ...

  6. 语法注释格式;格式化输出;input在py2和py3中的区别;数据的基本类型;运算符;

    一.Python中的注释 Python的注释是代码的评论,是让代码让人能更加清晰明确.代码的注释可分为单行注释和多行注释,单行注释用“#”,多行注释用三对单引号或者三对双引号来表示. ps:# 单行注 ...

  7. python py2与py3的编码问题

    一:什么是编码 将明文转换为计算机可以识别的编码文本称为"编码".反之从计算机可识别的编码文本转回为明文为"解码". 那么什么是明文呢,首先我们从一段信息说起, ...

  8. python8--文件操作 with。。。open语法

    复习   一.类型转换 1.数字类型:int() | bool() | float()  2.str与int:int('10') | int('-10') | int('0') | float('-. ...

  9. 一文读懂ES6(附PY3对比)

      Ⅰ.ES6~POP¶ 代码示例:https://github.com/lotapp/BaseCode/tree/master/javascript/1.ES6 在线演示:https://githu ...

随机推荐

  1. Lock 与Monitor 的用法与区别

    1.lock的底层本身是Monitor来实现的,所以Monitor可以实现lock的所有功能 2.Monitor有TryEnter的功能,可以防止出现死锁的问题,lock没有. 3.Monitor.E ...

  2. Exp3 免杀原理与实践 20164323段钊阳

    网络对抗技术 20164323 Exp3 免杀原理与实践 免杀 一般是对恶意软件做处理,让它不被杀毒软件所检测.也是渗透测试中需要使用到的技术. 要做好免杀,就时清楚杀毒软件(恶意软件检测工具)是如何 ...

  3. ClamAV学习【3】——scanmanager函数浏览

    吃饱饭继续浏览Manager.c的scanmanager函数,这个函数的功能吧,暂时理解如下. 接收一个命令行参数(经过处理的optstruct结构指针). 然后根据选项判断文件类型种类,还有一些扫描 ...

  4. “全栈2019”Java第八十八章:接口中嵌套接口的应用场景

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  5. 渗透日常之 花式实战助你理解CSRF

    本文作者:i春秋签约作家——onls辜釉 最近比较忙,很久没发文章了,Onls本就只是一个安全爱好者,工作也不是安全相关.以往的文章也更像是利用简单漏洞的“即兴把玩”,更多的是偏向趣味性,给大家增加点 ...

  6. yum 安装和卸载

    yum list列出资源库中特定的可以Linux Yum安装或更新以及已经安装的rpm包 安装 yum install 安装包关键字 卸载 yum remove 安装包名

  7. 确定 RN 中方法的 queue

     如果不指定,每一个模块,都会生成自己的一个串行队列. 可以通过强行声明一个队列来指定所有方法都在这个队列执行 - (dispatch_queue_t)methodQueue { return di ...

  8. 解决pymysql.err.InternalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x8C\\xB8' for column 'headline' at row 1")

    解决pymysql.err.InternalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x8C\\xB8' for column ...

  9. Scala代码开发 metaTable(元表)

    使用Scala语言开发时,自动生成get和set方法 不用写return进行返回, 因为它的最后一行就是返回值 先建立四个层(层层递进) domain 表结构的建立 repository(DAO) 实 ...

  10. 安卓手机移动端Web开发调试之Chrome远程调试(Remote Debugging)

    一.让安卓打debug模式的apk包 二.将电脑中的chrome升级到最新版本,在chrome浏览器地址栏中输入chrome://inspect/#devices: 在智能手机还未普及时,移动设备的调 ...