Python全栈-magedu-2018-笔记2
第二章 - Python 基础语法
基本语法
注释 —— # 标注的文本
- 数字
- 整数,不区分long和int
- 进制0xa、0o10、0b10
- bool,2个值True、False
- 浮点数
- 1.2、3.1415、-0.12,1.46e9等价于1.46*109
- 复数,1+2j
- 整数,不区分long和int
- 字符串
- 使用 ' " 单双引号引用的字符的序列
- '''和""" 单双三引号,可以跨行、可以在其中自由的使用单双引号
- 在字符串前面加上r或者R前缀,表示该字符串不做特殊的处理
- 转义序列
\\ \t \r \n \' \"- 前缀r,把里面的所有字符当普通字符对待
- 缩进
- 未使用C等语言的花括号,而是采用缩进的方式表示层次关系
- 约定使用4个空格缩进
- 续行
- 在行尾使用
- 如果使用各种括号,认为括号内是一个整体,内部跨行不用
- 标识符
- 一个名字,用来指代一个值
- 只能字母、下划线和数字
- 只能以字母或下划线开头
- 不能是python的关键字,例如def、class就不能作为标识符
- Python是大小写敏感的
- 约定:
- 不允许使用中文
- 不允许使用歧义单词,例如class_
- 在python中不要随便使用下划线开头的表示符
- 常量
- 一旦赋值就不能改变值的标识符
- python中无法定义常量
- 字面常量
- 一个单独的量,例如 12、"abc" 、'2341356514.03e-9'
- 变量
- 赋值后,可以改变值的标识符
Python的语言类型
Python是动态语言、强类型语言
- 静态编译语言
- 实现声明变量类型,类型不能再改变
- 编译时检查
- 动态编译语言
- 不用事先声明类型,随时可以赋值为其他类型
- 编程时不知道是什么类型,很难推断
- 强类型语言
- 不同类型之间操作,必须先强制类型转换为同一类型。print('a'+1)
- 弱类型语言
- 不同类型间可以操作,自动隐式转换,JavaScript中console.log(1+'a')
运算符 Operator
- 算数运算符
- + - * / % **
- 自然除/结果是浮点数,整除//。注:2.x中/和//都是整除
- 位运算符
- & | ~ ^ << >>
- 常用方式:乘除2的倍数,32 // 4相当于 32 >> 2
- 12,0xc,0o14,0b1100
- ~12等于多少,为什么
原码、反码、补码,负数表示法
- 原码
- 5 => 0b101,1 => 0b1 ,-1 => -0b1, bin(-1)
- 反码
- 正数的反码与原码相同;负数的反码符号位不变其余按位取反
- 补码
- 正数的补码与原码相同;负数的补码符号位不变其余按位取反后+1
有符号数才用补码表示
- 正数的补码与原码相同;负数的补码符号位不变其余按位取反后+1
- 负数表示法
- 数字电路的CPU中的运算器实现了加法器,但是没有减法器,减法是转换成加法
- 负数在计算机中使用补码存储,-1的补码为1111 1111
- 5-1 => 5+(-1)直觉上是0b101-0b1,其实计算机中是0b101+0b11111111,溢出位舍弃
- ~12为什么是-13?
- 10^9 等于? 10^-9等于?为什么
5 的补码 0000 0101
-1 的原码 1000 0001
-1 的补码 1111 1111 (0xff)
5-1得 0000 0100
12 的补码 0000 1100
~12 是 1111 0011
怎么从补码得到原码?
与得到补码是一样的,最高位不变,其他位取反加一,即补码的补码就是原码
1000 1101 (即-13)
- 比较运算符
- == != > < >= <=
- 返回一个bool值
- 1 < '1' 报错 1 == '1' False
- == 是可以不同类型比较的,除非 大于、小于等做类型重载,不然是不能比较的
- 链式比较操作符
- 4>3>2 4>mynumber>=1
- 逻辑运算符
- 与或非 and or not
- 短路运算符
- and 如果第一个表达式为False,后面就没有必要计算了,这个逻辑表达式一定是False
- or 如果第一个表达式True,后面没有必要计算了,这个逻辑表达式一定是True
- 赋值运算符
- a = min(3,5)
- += -= *= /= %= 等
- x = y = z = 10
- 尽量少用连等,因为如果右边是个引用就麻烦了
- 成员运算符
- in、not in
- 身份运算符
- is 、is not
运算符优先级(由高到低)
| 运算符 | 描述 |
|---|---|
| 'expr' | 字符串转换 |
| {key:expr} | 字典 |
| [expr1, expr2, ...] | 列表 |
| (expr1, expr2, ...) | 元组 |
| function(expr, ...) | 函数调用 |
| x[index:index] | 切片 |
| x[index] | 下标索引值 |
| x.attribute | 属性引用 |
| ~x | 按位取反 |
| +x, -x | 正,负 |
| x**y | 幂 |
| x*y, x/y, x%y, | 乘法,除,取模 |
| x+y, x-y | 加,减 |
| x << y, x >> y | 移位 |
| x&y | 按位与 |
| x^y | 按位异或 |
| x|y | 按位或 |
| x<y, x<=y , x==y, x!=y, x>=y, x>y | 比较 |
| x is y , x is not y | 等同测试 |
| x in y, x not in y | 成员测试 |
| not x | 逻辑否 |
| x and y | 逻辑与 |
| x or y | 逻辑或 |
| lambda arg, ... : expr | Lambda 匿名函数 |
- 算数运算符 > 位运算符 > 身份运算符 > 成员运算符 > 逻辑运算符 > 赋值运算符
- 位运算符也可以看成算术运算
记不住,用括号
长表达式,多用括号,易懂、易读
表达式 Expression
- 由数字、符号、括号、变量等的组合
- 算数表达式
- 逻辑表达式
- 赋值表达式
- Python中,赋值即定义,如果一个变量已经定义,赋值相当于重新定义
内存管理
- 变量无须事先声明,也不需要指定类型
- 动态语言的特性
编程中一般无须关心变量的存亡,也不用关心内存的管理
- python使用引用计数记录所有对象的引用数
- 当对象引用数变为0,它就可以被 垃圾回收GC
- 计数增加:
- 赋值给其它变量就增加引用计数,例如x=3;y=x
- 计数减少:
- 函数运行结束时,局部变量就会被自动销毁,对象引用计数减少
- 变量被赋值给其它对象。例如x=3;y=x;x=4
有关性能的时候,就需要考虑变量的引用问题,但是该释放内存,还是尽量不释放内存,看需求
程序控制
- 顺序
- 按照先后顺序一条条执行
- 例如,先洗手,再吃饭,再洗碗
- 分支
- 根据不同的情况判断,条件满足执行某条件下的语句
- 例如,先洗手,如果饭没有做好,玩游戏,如果饭做好了,就吃饭,如果饭都没有做,叫外卖
- 循环
- 条件满足就反复执行,不满足就不执行或不再执行
- 例如,先洗手,看饭好了没有,没有好,一会来看一次是否好了,一会儿来看一次,直到饭好了,才可是吃饭。这里循环的条件是饭没有好,饭没有好,就循环的来看饭好了没有
单分支结构
- if语句
- if condition:
- 代码块
- condition必须是一个bool类型,这个地方有一个隐式转换bool(condition)
- if 1<2:
print('1 less than 2')
- if condition:
- 代码块
- 类似于if语句的冒号后面的就是一个语句块
- 在if、for、def、class等
真值表
| 对象/常量 | 值 |
|---|---|
| "" | 假 |
| "string" | 真 |
| 0 | 假 |
| >=1 | 真 |
| <=-1 | 真 |
| ()空元组 | 假 |
| []空列表 | 假 |
| {}空字典 | 假 |
| None | 假 |
- False等价布尔值,相当于bool(value)
- 空集合
- 空字符串
- 空字典
- 空列表
- 空元祖
- None对象
- 0
- 空集合
多分支结构
if...elif...else语句
if condition1:
代码块1
elif condition2:
代码块2
elif condition3:
代码块3
......
else:
代码块举例
a = 5
if a<0:
print('negative')
elif a==0:
print('zero')
else:
print('positive')
分支嵌套
举例
score = 80
if score<0:
print('wrong')
else:
if score==0:
print('egg')
elif score <= 100:
print('right')
else:
print('too big')嵌套结构,可以是分支、循环的嵌套
可以互相嵌套多层
- 练习:给定一个不超过5位的正整数,判断其有几位
- 使用 input 函数,input返回的是字符串
- 如果位数多的话可以用折半
- num = 8
if (num /= 10) == 0: 为什么这里报错
print('1位数')
循环——while语句
- 语法
while condition:
block- 当条件满足即condition为True,进入循环体,执行block
- 举例
flag=10
while flag:
print(flag)
flag -= 1- 执行结果是什么?为什么?
- 如果flag=-10可以吗?如何改造?
循环——for语句*
- 语法
- for element in iteratable:
block - 当可迭代对象中有元素可以迭代,进入循环体,执行block
- for element in iteratable:
range函数
- 举例:打印1~10
for i in range(10):
print(i+1)- 执行结果是什么?为什么?
- 如果想倒序打印呢
循环 continue语句
中断当前循环的当次执行,继续下一次循环
- 举例:计算10以内的偶数(for循环)
for i in range(10):
if not i%2: # i%2==0这么写也行
print(i) 还有其它的实现吗?
for i in range(0,10,2):
print(i)
for i in range(0,10):
if i & 1: # 或用 i%2 表示奇数就continue
continue
print(i)
循环 break语句
- 终止当前循环
- 举例:计算1000以内的被7整除的前20个数(for循环)
count = 0
for i in range(0,1000,7):
print(i)
count += 1
if count >= 20:
break
循环 continue、break语句
- 总结
- continue和break是循环的控制语句,只影响当前循环,包括while、for循环
- 如果循环嵌套, continue和break也只影响语句所在的那一层循环
- continue和break 不是跳出语句块,所以 if cond: break 不是跳出if,而是终止if外的break所在的循环
- 练习:
给定一个不超过5位的正整数,判断该数的位数,依次打印出个位、十位、百位、千位、万位的数字
循环 else子句
语法
while condition:
block
else:
block
for element in iteratable:
block
else:
block如果循环正常的执行结束,就执行else子句;如果使用break终止,else子句不会执行
最后
本文的另外链接是:https://herodanny.github.io/python-magedu-2018-notes2.html
Python全栈-magedu-2018-笔记2的更多相关文章
- 自学Python全栈开发第一次笔记
我已经跟着视频自学好几天Python全栈开发了,今天决定听老师的,开始写blog,听说大神都回来写blog来记录自己的成长. 我特别认真的跟着这个视频来学习,(他们开课前的保证书,我也写 ...
- Python全栈之jQuery笔记
jQuery runnoob网址: http://www.runoob.com/jquery/jquery-tutorial.html jQuery API手册: http://www.runoob. ...
- python全栈开发之OS模块的总结
OS模块 1. os.name() 获取当前的系统 2.os.getcwd #获取当前的工作目录 import os cwd=os.getcwd() # dir=os.listdi ...
- python全栈开发中级班全程笔记(第二模块、第四章(三、re 正则表达式))
python全栈开发笔记第二模块 第四章 :常用模块(第三部分) 一.正则表达式的作用与方法 正则表达式是什么呢?一个问题带来正则表达式的重要性和作用 有一个需求 : 从文件中读取所有联 ...
- python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)
python全栈开发笔记第二模块 第四章 :常用模块(第二部分) 一.os 模块的 详解 1.os.getcwd() :得到当前工作目录,即当前python解释器所在目录路径 impor ...
- python全栈开发中级班全程笔记(第二模块、第三章)(员工信息增删改查作业讲解)
python全栈开发中级班全程笔记 第三章:员工信息增删改查作业代码 作业要求: 员工增删改查表用代码实现一个简单的员工信息增删改查表需求: 1.支持模糊查询,(1.find name ,age fo ...
- 老男孩Python全栈第2期+课件笔记【高清完整92天整套视频教程】
点击了解更多Python课程>>> 老男孩Python全栈第2期+课件笔记[高清完整92天整套视频教程] 课程目录 ├─day01-python 全栈开发-基础篇 │ 01 pyth ...
- 老男孩最新Python全栈开发视频教程(92天全)重点内容梳理笔记 看完就是全栈开发工程师
为什么要写这个系列博客呢? 说来讽刺,91年生人的我,同龄人大多有一份事业,或者有一个家庭了.而我,念了次985大学,年少轻狂,在大学期间迷信创业,觉得大学里的许多课程如同吃翔一样学了几乎一辈子都用不 ...
- 学习笔记之Python全栈开发/人工智能公开课_腾讯课堂
Python全栈开发/人工智能公开课_腾讯课堂 https://ke.qq.com/course/190378 https://github.com/haoran119/ke.qq.com.pytho ...
- python 全栈开发之路 day1
python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...
随机推荐
- 弄懂promise
ECMAscript 6 原生提供了 Promise 对象. Promise 对象代表了未来将要发生的事件,用来传递异步操作的消息 有了 Promise 对象,就可以将异步操作以同步操作的流程表达出来 ...
- C++设计模式——备忘录模式
备忘录模式 在GOF的<设计模式:可复用面向对象软件的基础>一书中对备忘录模式是这样说的:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢 ...
- centos7中nfs文件系统的使用
需求: file01:1.1.1.1(内网ip 172.20.103.212),file02:2.2.2.2(内网ip 172.20.103.211) 这两台机器的 /dev/mapper/myvg- ...
- Mysql --数据库概述1
什么是数据(Data)? 描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字.图片,图像.声音.语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机 在计算机中描述一个事物, ...
- Excel-VBA入门(1): 基础 / 变量 /for / if/ 调试
(一) 启动VBA 打开excel ,选项-自定义功能区-开发工具, 在界面的开发工具下选择 宏安全: 勾选 启用所有 excel保存xlsm后缀的格式才可以用宏! 若启动VBA编辑器(以下简称VB ...
- Jmeter性能测试之Monitor监控(四)
使用Jmeter(该篇文章使用的版本最高为3.1, 3.1+的版本存在兼容性问题)做性能测试, 要监控服务器硬件资源消耗情况, 可以使用扩展插件完成. 1. 服务端插件下载agent, 点击这里 , ...
- 利用Centos服务器来搭建自己的splash,不再被安装的各种环境繁琐而担忧
Centos7.5 ----- docker ------- splash 第一步:服务器环境的配置 第二步:dcoker环境的配置 ...
- [原创]基于Zynq Linux环境搭建(二)
在此篇,我们编译UBOOT 解压: [#17#17:26:56 FPGADeveloper@ubuntu ~/Zybo_Demo]$tar zxvf *.tar.gz 在解压过程中出现下述问题 tar ...
- Go Socket实现简单的HttpServer
在上篇博客中写到如何用Python实现一个类似tomcat的简单服务器,接下来用go语言去实现 1. Go本身自己封装实现了非常简单的httpServer package main import ( ...
- 在macOS下使用MAXPP搭建本地开发服务器简易流程
本文适用于解决前端开发时所需的服务器支持,包括文件上传和下载.在开发环境中需要保持尽量的开放,并不是安全的.根据浏览器安全协议,所下载的开源项目是不能直接在file中直接打开的,需要把文件放置在服务器 ...