Python 基础知识标识符和操作符 |学习笔记

简介: 快速学习 Python 基础知识标识符和操作符

开发者学堂课程【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(换行符) 

\'(用来界定一个字符串边界)   

\"(加\表示不用原来的意思)

代码演示:

print(ab\c’)abc(ab\c’是字符串,\是转义符)

print(ab\c,100,\n)  abc 100

(2)、回车不一定换行,真正的换行是\n,这样可以打印多个数据(任何数据都可以)

不是数字,是*号代表一直在运行(死循环);不同的文本编辑器,换行不一样;不同程序下面也是不一样的。

(4)、\t:一般情况下是4个空格或者8个空格

print(rab\c\t,100,\r)        abc\t 100

(5)、\\:加在中间,后面的\不做转义符,前面\是进行转义的,把后面的打印出来

(6)、加r恢复本身,也就是不转义了,一般在设定正则表达式的时候用

(7)、安装 jupyter 连接虚拟机,在本地网站中。

(8)、前缀r,把里面的所有字符当普通字符对待

2、缩进 (用缩进来表示程序的相关性和层次)

(1)、未使用C等语言的花括号,而是采用缩进的方式表示层次关系

(2)、约定使用4个空格缩进

(写多行的时候用三引号,比较方便)

3、续行代码展示:

print(ab\nc)

ab

c

print(”””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     Groovy        C#       Scala

Clojure   Ruby               java

Python    Magik         F#        Haskel

Dynamic  Static

Perl      PHP            C

VB       JavaScript       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, Oxc0o14, 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、比较运算符 (很重要)

代码例子:

1a报错

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>=1mynumber 是一个变量)

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,这两种结果)

补充知识:数据结构的基础就是字节的位

相关文章
|
2月前
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
275 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
2月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
145 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
2月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
158 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
2月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
67 1
|
2月前
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
97 1
|
2月前
|
索引 Python
Python学习笔记编程小哥令狐~持续更新、、、(上)
Python学习笔记编程小哥令狐~持续更新、、、(上)
51 2
|
2月前
|
存储 Python
Python学习笔记编程小哥令狐~持续更新、、、 (下)
Python学习笔记编程小哥令狐~持续更新、、、 (下)
34 1
|
2月前
|
存储 Python
【免费分享编程笔记】Python学习笔记(二)
【免费分享编程笔记】Python学习笔记(二)
44 0
【免费分享编程笔记】Python学习笔记(二)
|
2月前
|
Java 编译器 Go
Python学习笔记--- day01计算机基础和环境搭建(一)
Python学习笔记--- day01计算机基础和环境搭建(一)
|
2月前
|
程序员 编译器 Python
Python学习笔记--- day01计算机基础和环境搭建(二)
Python学习笔记--- day01计算机基础和环境搭建(二)