开发者学堂课程【Python 开发基础入门:Python 基础知识标识符和操作符】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/556/detail/7649
Python 基础知识标识符和操作符
一、Python 基础语法
1、 注释——#标注的文本(告诉别人下面代码是什么意思)
2、数字(如何一门语言中都有,高级语言中都有,指的是纯粹的数字,支持整形、浮点数、复数,用于科学计算,支持复数)
3、 整数,不区分long和int;(所以的数据都是长整形,而且这些数据没有上限,要多大有多大,只有计算机内存放得下)
4、进制 Oxa(16进制)、0o10(8进制)、0b10(2进制);(在某些特定情况下,8进制用的少,在lunx 权限中看见,最大是7,16进制用的特别多)
5、bool,只有2个值True、False (在python中首字母要大写,小写会错,是整形里面的子类,也是0和1的意思。)
6、浮点数(小数点不是固定的,浮点表示范围很大,可以用科学计数法来描述,有正数有负数,但是不是任何一个数都可以用浮点数来表达,浮点数只能对某些数字作近似表达,在做金融数据时要小心小数点,不是每一个数都可以用浮点数表达,python 已经简化很多了,比如无理数)
7、 1.2、3.1415、-0.12,1.46e9等价于1.46*(10的9次方)
8、复数,1+2j
9、字符串
10、使用'"单双引号引用的字符的序列。(这里没有区别)
11、"'和"""单双三引号,可以跨行、可以在其中自由的使用单双引号。(但是在python中引入单双三引号:连着写代表里面还是字符串,但是里面还是可以使用单引号双引号,也可以换行,折行)
12、在字符串前面加上r或者R前缀,表示该字符串不做特殊的处理,回复成本身。
二、基础语法
1、转义序列(转义字符)
(1)、\\(转义符后面跟被转义字符,不再搞特殊化)
\t(TAB)
\r(回车)
\n(换行符)
\'(用来界定一个字符串边界)
\"(加\表示不用原来的意思)
代码演示:
p
rint(
‘
ab\
’
c’)ab
’
c(
‘
ab\
’
c’是字符串,\是转义符)
p
rint(
‘
ab\
”
c
’
,100,
’
\n
’
) ab
”
c 100
(2)、回车不一定换行,真正的换行是\n,这样可以打印多个数据(任何数据都可以)
不是数字,是*号代表一直在运行(死循环);不同的文本编辑器,换行不一样;不同程序下面也是不一样的。
(4)、\t:一般情况下是4个空格或者8个空格
print(r‘ab\”c\t’,100,’\r’) ab”c\t 100
(5)、\\:加在中间,后面的\不做转义符,前面\是进行转义的,把后面的打印出来
(6)、加r恢复本身,也就是不转义了,一般在设定正则表达式的时候用
(7)、安装 jupyter 连接虚拟机,在本地网站中。
(8)、前缀r,把里面的所有字符当普通字符对待
2、缩进 (用缩进来表示程序的相关性和层次)
(1)、未使用C等语言的花括号,而是采用缩进的方式表示层次关系
(2)、约定使用4个空格缩进
(写多行的时候用三引号,比较方便)
3、续行代码展示:
p
rint(
‘
ab\nc
’
)
ab
c
p
rint(
”””
ab
c
”””
)
ab
C
三引号最大的好处是换行,比较方便。
(1)、在行尾使用\(一行代码太长,后面加\续到下一行写,但是有一个例外。如果写一个函数,括号内的\不用换行)
(2)、如果使用各种括号,认为括号内是一个整体,内部跨行不用\
3、标识符(编程的过程中,需要名称指代数据,数据可能是字符串或者数字,但是不能直接用数字。任何一个名称都必须有标识符)
(1)、一个名字,用来指代一个值(字符串或者数字)
(2)、只能字母、下划线和数字
(3)、只能以字母或下划线开头(不能以数字开头)
(4)、不能是 python 的关键字,例如def、class就不能作为标识符(因为 python 已经用了,不然无法解释作用,会有语法错误)
(5)、Python是大小写敏感的(a A 是完全不一样的,是合法的标识符,是区分大小写的)
约定:
不允许使用中文(允许用中文做标识符,但是会有编码问题,所以不用中文)
不允许使用歧义单词,例如class_(容易会产生歧义)
在python中不要随便使用下划线开头的表示符(除非明确知道_是做什么,尽量以字母开头,_有特殊意思,会引起歧义)
5、常量(标识符被定义好之后,就不能改动)
(1)、一旦赋值就不能改变值的标识符
(2)、python中无法定义常量(没有定义常量的方式,最灵活的地方,也是最大的弊端)
6、字面常量(也叫字面量,存在之后不能被修改,但是不是合法的标识符。python没有常量)
(1)、一个单独的量,例如 12、"abc"、‘2341356514.03e-9'
7、变量(赋值后,标识符可以再被赋值,可以改变)
(1)、赋值后,可以改变值的标识符
三、Python 的语言类型
1、Python是动态语言、强类型语言
一旦是一个变量,就可以随意给他赋各种合法类型的值
2、静态编译语言 (需要明确知道是什么类型,例如:C++;Javac)
(1)、实现声明变量类型,类型不能再改变
(2)、编译时检查
3、动态编译语言(不需要明确知道是什么类型,运行时才知道是什么类型,运行时决定是什么类型,所以不需要事先声明,Python中没有定义常量这个意义;
缺点:编译的时候,不能确定类型,所以在运行的时候,只要送入一个数据就可以,但是如果不符合写程序人所需的类型,就会报错。)
(1)、 不用事先声明类型,随时可以赋值为其他类型 VB JavaScr
(2)、 编程时不知道是什么类型,很难推断
4、强类型语言(例如:字符串和整形数字,不可以写在一起,会报错,必须类型一样才可以运行)
(1)、 不同类型之间操作,必须先强制类型转换为同一类型。print('a'+1)
5、弱类型语言(可以直接运行,但是是在内部自动把类型转换成一种类型,然后再运行)
(1)、不同类型间可以操作,自动隐式转换,JavaScript中console.log(1+'a')
注释:如果字符串和数字在一起,能够运行就是弱类型语言;如果不能运行就是强类型语言。(强弱是相对的概念,就是不同类型之间有些可以转换,有些不可以转换)
字符串之间就是拼接起来。不需要提前声明类型。
Print(‘a’ + str(1))就是强制转换
Strong
Erlang
Groov
y C# Scala
Clojure
Ruby
java
Python
Magi
k F# Haskel
Dynamic
Static
Perl
PHP
C
VB
JavaScr
ipt C++
Weak
动态编译语言:也是叫动态解释性语言,解释性语言有一种编译过程,编译成中间代码,也就是字节码,然后字节码在解释器上变成本地CPU能够执行的指令,因为代码肯定实在本机上运行的。
指令必须是2进制的,只认识0和1。
四、运算符 Operator(也叫操作符)
对那些数据类型进行操作
1、算数运算符
(1)、+-*/%**
(2)、自然除/结果是浮点数,整除//。注:2.x中/和//都是整除
例如:1/2 0.5(自然除法)
1//2 0(//得整形,强行取整,与四舍五入无关)
1/0(除0异常,没有意义的数字
2、位运算符(bit,计算机中最小的表达,大大的提高效率)
(1)、&(位与);|(位或);~(位取反);^(异或);<<(左移);>>(右移)
(2)、常用方式:乘除2的倍数,32 // 4相当于32>> 2(每移一位相当于乘以2或者除以2;32//4:相当于向右移了2次)
(3)、虚拟机语言有一个特性,虚拟机中的编译器或者说是解释器,会自动优化,看字节码,会发现已经自动做优化,效率非常高。C和C++不会做自动优化。
(4)、12, Oxc,0o14, 0b1100(c大小写都可以)
代码例子:
bin(12) ‘0b1100’(bin是一个函数,2进制;输出是一个字符串:把整形转换为能看懂的字符串,口诀8421)
(意思是用2进制来转换12,转换成功为0b1100)
0b1100 12(用10进制的方式表达出来)
(5)、~12等于多少,为什么
~:按位取反
~12 -13
五、原码、反码、补码,负数表示法
1、原码(人比较喜欢的方式)
(1)、5=> 0b101, 1=> 0b1,-1=>-0b1, bin(-1)
(用这种方式表示正数和负数,最左边也就是最高位写0为正号,1为负号)
代码演示:
bin(-1) ‘-0b1’
2、反码
(1)、正数的反码与原码相同;负数的反码符号位不变其余按位取反
3、补码(补码的补码就是原码)
(1)、正数的补码与原码相同;负数的补码符号位不变其余按位取反后+1(使用补码是因为,逻辑电路设计太麻烦;只要在计算机中看到的数字都是用补码来表示,这句话是没有错的;正数的补码和反码是一样的,只有负数是用补码来表示,是为了运算方便。)
4、负数表示法
(1)、 口 数字电路的CPU中的运算器实现了加法器,但是没有减法器,减法是转换成加法
(2)、 口负数在计算机中使用补码存储,-1的补码为1111 1111
(3)、 口 5-1 => 5+(-1)直觉上是0b101-0b1,其实计算机中是0b101+0b11111111,溢出位舍弃
5-1的计算:
0000 0101
补码:1111 1111
0000 0100 4(前面的1是溢出位,舍弃)
原码:1000 0001
~12的计算
0000 1100 +12
1111 0011 (补码是在内存中)
1000 1101
(操作就是内存,在计算机中是补码,看见的只能是原码,所以要注意转化为原码,再进行操作,补码对机器有用)
(4)、 口~12为什么是-13?
(5)、 口10^9等于?10^-9等于?为什么(^是异或)
注意:要多训练,2进制必须了如指掌。
六、运算符
四则运算,取模运算等,下面学习与位相关的运算,操作都是二进制,必须把所看见的数字转换为二进制,然后对位逐个操作,到底是位于还是位或,什么是位于,什么是位或
位于:按位相乘(是按位相乘)
位或:按位相或(或相当于加法,但是是按位相加)
1、比较运算符 (很重要)
代码例子:
1
’
a
’
报错
1 == ‘1’ False
1> 2 False
不同类型之间不可以比较大小,但是可以比较等于不等,可以知道是否是相同类型。所谓的比较大小,意思是相同类型的情况下。
‘1’ > ‘2’ false
背后有一个原理叫ASCLL码,任何一个字符都可以对照一个ASCLL码,一般指单字节,多字节也可以按字节比较,但是多字节有比较规则,一般情况下都是一个字节一个字节比较。
‘1’ > ‘10’ False
(按照ASCLL码排,会引起一些问题,可以用代码试试)
(1)、 == != > < >= <=
(2)、 返回一个bool值
(3)、 1<'1' 1=='1' 白哥教育
(4)、 链式比较操作符
(5)、 4>3>2
4>mynumber>=1 ( mynumber 是一个变量)
2、逻辑运算符(非常重要,比如if语句,循环条件)
(1)、 与或非(必须要用字母来写,与和或是可以短路的,把与当做是乘法,把或当做加法,非就是取反) and or not
(2)、 短路运算符(是优化代码的一个点,逻辑运算符是true或者false,有and 连接前面和后面要同时成立)
(3)、 and如果第一个表达式为False,后面就没有必要计算了,这个逻辑表达式一定是False
(4)、 or 如果第一个表达式True,后面没有必要计算了,这个逻辑表达式一定是True
3、如何用逻辑运算符:
如果两个条件之间用的是and,也就是与,就是说需要两个条件需要同时成立,如果前面一个条件已经是false,那么后面的条件就不需要计算。
短路运算符要考虑条件哪一个放在前面,如果前面的条件,立马短路的话,大大节省时间,所以短路运算符用处非常大,需要牢记,并且要考虑把哪一个放在前面。
(1)、赋值运算符(是动态语言,有=号就是赋值运算符,Python中不建议连等,不推荐连等。)
动态语言的好处是不用告诉类型。可以直接定义变量,这个变量就是标识符,标识符还可以重新赋值(任何类型都可以)。
代码展示:
a =
‘
abc
’
a
‘
abc
’
a = 6 a 6
b = a (符合要求) b ‘abc’(叫字面常量,只有一份)
a b还可以继续赋值,不限定类型,可以随便赋值。
a +=’d’ a ‘abcd’ (写法一般用这种,要用规定的语法)
相当于a = a + ‘d’(+=是最简单的)
‘a’< a < ‘b’ true
(字符串比较规则是按字符逐个比较)
(2)、a=min(3,5)
(3)、+= -= *= /= %=等
x = y = z = 10
4、成员运算符
(1)、 in、not in
5、身份运算符
(1)、 is、is not
七.运算符优先级(由高到低)
括号可以解决一切问题,改变优先级
运算符 |
描述 |
’expr' |
字符串转换 |
{key:expr,...} |
字典 |
[exprl, expr2...] |
列表 |
(expr1,expr2,...) |
元组 |
function(expr,..) |
函数调用 |
x[index:index] |
切片 |
x[index] |
下标索引取值 |
x.attribute |
属性引用 |
~ |
按位取反 |
+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 in y,x is not y |
等同测试 |
x in y,x not in y |
成员判断 |
not x |
逻辑否 |
x or y |
逻辑与 |
X or y |
逻辑或 |
(1)算数运算符 > 位运算符>身份运算符 > 成员运算符 > 逻辑运算符
(2)记不住,用括号
(3)长表达式,多用括号易懂、易读
代码展示:
a > ‘b’ and( a < ‘c’ or 1 == 2)
复核表达式,可以优先短路
八.表达式 Expression
(1)、 由数字、符号、括号、变量等的组合
(2)、 算数表达式
(3)、 逻辑表达式 可以混合在一起写
(4)、 赋值表达式
(5)、 Python中,赋值即定义,如果一个变量已经定义,赋值相当于重新定义
(6)代码展示:
a = a > ‘b’ and( a < ‘c’ or 1 == 2) false
a是 布尔型
(逻辑表达式,只有true和false,这两种结果)
补充知识:数据结构的基础就是字节的位