基础语法

基础语法

标签(空格分隔): python

1,注释

# 井号标注的文本

2,数字

2.1 整数int

  • python3开始不再区分long、int,long被重命名为int,所以只有int类型了
  • python3开始已经不限制整数的长度了
  • 进制表示:(逢几进一就是几进制
    十进制10
    十六进制0x10
    八进制0o10
    二进制0b10

1Byte=8bit=8位

二进制转十进制

1111
8421
转成十进制:1*8 + 1*4 + 1*2 + 1*1 = 15
            1*2**3 + 1*2**2 +1*2**1 + 1*2**0 = 15

十六进制转十进制

0x 11
转成十进制:1*16**1 + 1*16**0 = 17 

综合转换

0b 1111 1111
0x F    F

0b 1000 1001
0x 8    9
   16**1 16**0
   8*16**1 + 9*16**0 = 137
  • bool类型,有2个值True、False

2.2 浮点数float

1.2、3.1415、-0.12、1.46e9等价于科学计数法1.46*10^9
本质上使用了C语言的double类型

2.3 复数complex

1+2j或1+2J

3,字符串

3.1 字符串的定义

  • 使用' '' 单双引号引用的字符的序列
  • ''' 和 """ 单双三引号,可以跨行、可以在其中自由的使用单双引号
"""ab
c"""
'ab\nc'

3.2 字符串的r前缀和f前缀

  • r前缀: 在字符串前面加上r或者R前缀,表示该字符串不做特殊的处理
  • f前缀: python3.6版本开始,新增f前缀,格式化字符串

3.3 字符串拼接

str(1) + ',' + 'b' # 都转换成字符串拼接到一起
"{}-{}".format(1, 'a') # {}就是填的空,有2个,就使用2个值填充

# 在3.6后,可以使用插值
a = 100; b = 'abc'
f'{a}-{b}' # 一定要使用f前缀,在大括号中使用变量名(插值字符串)
a = 100
b = 200
'{} {}{}'.format(a,b,a+b)
'100 200300'

'{}+{}={}'.format(a,b,a+b)
'100+200=300'

4,转义序列

- \\ \t \r \n \' \"
-
    \n换行符newline linux
    \r return 换行mac
    \r\n windows
    \t tab 向右偏8个单位或4个单位的长度

- 上面每一个转义字符只代表**一个字符**,例如\t显示时占了4个字符位置,但是它是一个字符
- 前缀r,把里面的所有字符当普通字符对待,则转义字符就不转义了
**转义:**让字符不再是它当前的意义,例如\t,t就不是当前意义字符t了,而是被\转成了tab键,

'a\''
"a'"
'ab\'c'
"ab'c"

5,缩进

  • 未使用C等语言的花括号,而是采用缩进的方式表示层次关系
  • 约定使用4个空格缩进

6,续行

  • 在行尾使用\,注意\之后除了紧跟着换行之外不能有其他字符
  • 如果使用各括号,认为括号内是一个整体,其内部跨行不用\
a = "abcd"
"efg"

a
'abcd'

a = "abcd"\     #代码太长,可能会用续航符\  
"efg"

a
'abcdefg'

7,标识符

7.1 标识符规则

  1. 一个名字,用来指代一个值
  2. 只能是字母、数字和下划线的组合
  3. 只能以字母和下划线开头
  4. 不能是python的关键字,例如def、class就不能作为标识符
  5. python是大小写敏感的
  6. 全部小写(目前),多个单词使用下划线连接

7.2 标识符约定

  • [] 不允许使用中文,也不建议使用拼音
  • [] 不要使用歧义单词,比如class_
  • [] 在python中不要随便使用下划线开头的标识符

7.3 常量

  • 一旦赋值就不能改变值的标识符
  • python中无法定义常量

7.4 字面常量

  • 一个单独的不可变量,例如12、"abc"、'2341356514.03e-9'

7.5 变量

  • 赋值后,可以改变值的标识符

7.6 标识符本质

  • 每一个标识符对应一个具有数据结构的值,但是这个值不方便直接访问,程序员就可以通过其对应的标识符来访问数据,标识符就是一个指代。一句话,标识符是给程序员编程使用的。

8,语言类型

pyhton是动态强类型语言。
JS是动态弱类型语言。

8.1 静态语言

  • 事先声明变量类型,之后变量的值可以改变,但值的类型不能再改变
  • 编译时检查(编译时可以检查类型错误

8.2 动态语言

  • 不用事先声明类型,随时可以赋值为其他类型
  • 编程时不知道是什么类型,很难推断
python 在 3.6 版本之后开始陆续支持对于 类型注释 的支持
如:a:int = 5   # 定义一个数字5,但是只是对类型的注释,不做强制类型转换

8.3 强类型语言

  • 不同类型之间操作,必须先强制类型转换为同一类型 print('a' + 1)

8.4 弱类型语言

  • 不同类型间可以操作,自动隐式转换,JavaScript中console.log('a' + 1),但是要注意的是,强和弱只是一个相对的概念,即使是强类型语言也支持隐式类型转换。

%%js 属于是jupyter 调用js执行语句的命令

%%js    # %%js --> 在当前cell中调用js
console.log('a' + 100)
console.log('a' + 1000)

9,False等价

False等价布尔值,相当于bool(value)

# 假False
    
    False
    None        # nothing
    ''          # empty,空字符串
    0
    空容器(仅限于python)
        空列表[]
        空元组()
        空字典{}
        空集set()

注:
只有以上的是假(False),其余的都是真(True)

10,逻辑运算真值表

11,运算符Operator

11.1 算数运算符

+、-、*、/、//向下取整整除、%取模、**幂
注:在python2中/和//都是整除

11.2 位运算符

&位与、|位或、^异或、<<左移、>>右移
~按位取反,包括符号位

11.3 比较运算符

==、!=、>、>=、<、<=

链式比较:4 > 3 > 2

思考:1 == '1' 吗? 1 > '1' 吗?

1 > '1'
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_5284/779245044.py in <module>
----> 1 1 > '1'

TypeError: '>' not supported between instances of 'int' and 'str'   # 不同类型不能比较

1 == '1'    # 等于和不等于可以跨类型比较,但是跨类型比较是没有意义的
False

注:数值之间是可以进行比较的(整数和浮点数)

11.4 逻辑运算符

与and、或or、非not
逻辑运算符也是短路运算符

  • and如果前面的表达式等价为False,后面就没有必要计算了,这个逻辑表达式最终一定等价位False
1 and '2' and 0
0 and 'abc' and 1
  • or如果前面的表达式等价为True,后面没有必要计算了,这个逻辑表达式最终一定等价为True
1 or False or None
  • 特别注意,返回值。返回值不一定是bool类型
  • 把最频繁使用的,做最少计算就可以知道结果的条件放到前面,如果他能短路,将大大减少计算量

11.5 赋值运算符

a = min(3, 5)
+=、-=、*=、/=、%=、//=等
x = y = z = 10
复制语句先计算等式右边,然后再赋值给变量

11.6 成员运算符

in、not in,用来判断是否是容器的元素,返回布尔值

11.7 身份运算符

is、not is,用来判断是否是同一个对象

12,运算符优先级

  • 单目运算符 > 双目运算符

  • 算数运算符 > 位运算符 > 比较运算符 > 逻辑运算符

    • -3 + 2 > 5 and 'a' > 'b'

搞不清楚就使用括号,长表达式,多用括号,易懂、易读。

13,表达式

由数字、符号、括号、变量等的组合。有算数表达式、逻辑表达式、赋值表达式、lambda表达式等等。
Python中,赋值即定义。Python是动态语言,只有赋值才会创建一个变量,并决定了变量的类型和值。
如果一个变量已经定义,赋值相当于重新定义。

posted @ 2022-12-20 19:52  yao-yuan-ge  阅读(70)  评论(0)    收藏  举报