[PY3]——基本语法
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]——基本语法的更多相关文章
- [PY3]——内置数据结构(6)——集合及其常用操作
集合及其常用操作Xmind图 集合的定义 # set( ) # {0,1,2} //注意不能用空的大括号来定义集合 # set(可迭代对象) In [1]: s=set();type ...
- python简介
python起源 作者Guido van Rossum,荷兰人 在创建python之初,1989年12月份,Guido只是想用编程来打发圣诞的闲暇时光.Guido也希望能有一门语言既能够像C语言那样, ...
- [py]编码-强力理解版
py编码骨灰级总结 思路: python执行py文件步骤--py2/3定义变量时unicode差异 1,py2 py3执行py文件的步骤 2,py2 定义变量x='mao' 1.x='mao', # ...
- selenium自动化(一).........................................搭建环境
一 环境搭建 安装python(建议使用py3) py2和py3在语法上会有一定的差别 第三方插件逐步转向py3,很多py2的插件已经停止维护 本教程的所有代码基于py3 安装selenium插件 ...
- python全栈测试之路-py3基础:基础的常用语法知识
python基础链接 python3速查参考- python基础 2 -> if语句应用 + while循环应用 https://www.cnblogs.com/wuzhiming/p/7795 ...
- 语法注释格式;格式化输出;input在py2和py3中的区别;数据的基本类型;运算符;
一.Python中的注释 Python的注释是代码的评论,是让代码让人能更加清晰明确.代码的注释可分为单行注释和多行注释,单行注释用“#”,多行注释用三对单引号或者三对双引号来表示. ps:# 单行注 ...
- python py2与py3的编码问题
一:什么是编码 将明文转换为计算机可以识别的编码文本称为"编码".反之从计算机可识别的编码文本转回为明文为"解码". 那么什么是明文呢,首先我们从一段信息说起, ...
- python8--文件操作 with。。。open语法
复习 一.类型转换 1.数字类型:int() | bool() | float() 2.str与int:int('10') | int('-10') | int('0') | float('-. ...
- 一文读懂ES6(附PY3对比)
Ⅰ.ES6~POP¶ 代码示例:https://github.com/lotapp/BaseCode/tree/master/javascript/1.ES6 在线演示:https://githu ...
随机推荐
- NG2-我们创建一个可复用的服务来调用英雄的数据
<英雄指南>继续前行.接下来,我们准备添加更多的组件. 将来会有更多的组件访问英雄数据,我们不想一遍一遍地复制粘贴同样的代码. 解决方案是,创建一个单一的.可复用的数据服务,然后学着把它注 ...
- sql 存储过程带有模糊查询条件
一个简单的存储过程: Create procedure [dbo].[Proc_SeachJob] (@startRecordIndex int, @endRecordIndex int, @seac ...
- 4-C#格式处理
本篇博客对应视频讲解 前言 前几篇文章及对应视频是带大家快速体验了一下C#,了解编程语言最基础的内容及面向对象的概念. 接下来我会进一步演示和说明C#还能做些什么. 实际上,C#就一门语言来讲,除去面 ...
- UWP多线程枚举安全的List
最近在做windows runtime下APP开发的工作.在Service层请求返回后,往往会通过回调的形式来通知UI更新数据.多个线程操作经常出现foreach抛出异常:System.Invalid ...
- 如何在WS系统的DOS命令台打印JAVA_HOME变量
echo %JAVA_HOME% 查看环境变量 path 新增临时环境变量 path D:\test;%path% 注意是反斜杆 cls 清空 F7 显示历史CMD指令
- Python FLask Web 学习笔记:jinjia2的使用方法1
# coding:utf-8 from jinja2 import Template x = """ <p>大爷的孙子</p> <ul> ...
- docker设置引用国内镜像加速
设置步骤: 1 先到daocloud.io网站注册一个账号 过程略,注册成功后,进入控制台 2 点击控制台上的加速器 拉到中间部分,有一个『主机监控程序』的文字链接,见下图: 然后选择主机类型,我用的 ...
- 记一次MBR锁机病毒分析
有一天,在机缘巧合之下我获得了一个锁机软件(是多巧合阿喂!),然后兴高采烈的把它拖入了虚拟机里蹂躏(>_<!). 很巧,软件有虚拟机检测... Emmmm好吧,随便过一下... 我用的虚拟 ...
- SSH登陆验证绕过漏洞(cve-2018-10933)
名称: SSH登陆验证绕过漏洞 CVE-ID: cve-2018-10933 EXPLOIT-DB: https://www.exploit-db.com/exploits/45638/ 平台: Li ...
- ListOrderedMap与Map的区别
ListOrderedMap位于commons-collections的jar包里,与普通的map相比,ListOrderedMap的key可保持原有顺序,在某些情况比如做报表的时候,非常实用. 代码 ...