[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 ...
随机推荐
- MVC控制器中动作方法返回的结果
在MVC控制器中主要的返回方式有如下几种: 1.Content(): 返回文本类型的ContentResult,比如“这是我做的一个MVC”. 2.File(): 返回文件类型的内容FileResul ...
- leetcode 合并两个有序数组
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: - 初始化 nums1 和 nums2 的元素数量分别为 m 和 ...
- UWP开发入门(三)——{x:Bind}扩展标记
上周打炉石打得太晚……忘记更新了,本周补上.本篇我们讲一下{x:Bind}扩展标记.{x:Bind}扩展标记也是Windows 10 Uinversal 新增的内容,按官方的说法是 {Binding} ...
- Cookie的创建与删除
Cookie 为 Web 应用程序保存用户相关信息提供了一种有用的方法.例如,当用户访问站点时,可以利用 Cookie 保存用户首选项或其他信息,这样,当用户下次再访问站点时,应用程序就可以检索以前保 ...
- css3半圆
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 点击文字,把input type="radio"也选中
本文原文地址:https://my.oschina.net/jack088/blog/469815 1. <label> <input type="radio" ...
- HTML5语义化标签总结
1.语义化标签总结 基础布局标签 <header></header> <nav></nav> <main></main> < ...
- 由button标签在 IE 8.0 下的异常表现引发的一场血案
写在最前的最后:整篇文章絮絮叨叨说了半天,我得出一个最佳实践:和button标签say goodbay,用 a 标签模拟之. 首先看一个在chrome 下的简单demo 这样的布局在组件开发中再常见不 ...
- [CISCO] 交换机间链路聚合端口聚合
[CISCO] 交换机间链路聚合端口聚合 一.Introduction 端口通道( port channel ) 是一种聚合多个物理接口 ( that ) 创建一个逻辑接口.你可以捆扎( bundle ...
- 第五届CCPC河南省赛参赛有感
10点开始,不过两次推迟了10分钟,也就是10点20开始.然后真的开始了,我还以为还会推迟10分钟. 比赛从密码输错开始,到瞎改代码疯狂提交结束. 输错密码,耽误了一点时间.点开签到题<文本修改 ...