python学习笔记day1

目录

一、基础语法:

1、标识符

2、注释

3、行与缩进

4、输出

[5、import 与 from...import](#5、import 与 from...import)

二、基本数据类型:

1、Number(数字)

2、String(字符串)

3、bool(布尔类型)

4、List(列表)

5、Tuple(元组)

6、Set(集合)

7、Dictionary(字典)

[8、bytes 类型](#8、bytes 类型)

[9、Python 数据类型转换](#9、Python 数据类型转换)

三、运算符:

1、算术运算符

2、比较运算符

3、赋值运算符

4、逻辑运算符

5、成员运算符

6、身份运算符


一、基础语法:

1、标识符

  • 第一个字符必须以字母(a-z, A-Z)或下划线 _ 。
  • 标识符的其他的部分由字母、数字和下划线组成。
  • 标识符对大小写敏感,count 和 Count 是不同的标识符。
  • 标识符对长度无硬性限制,但建议保持简洁(一般不超过 20 个字符)。
  • 禁止使用保留关键字,如 if、for、class 等不能作为标识符。
  • 注意Python 3 允许使用 Unicode 字符作为标识符,可以用中文作为变量名,非 ASCII 标识符也是允许的了。
python 复制代码
姓名 = "张三"  # 合法
π = 3.14159   # 合法

1.1关键字
*

|----------|------------|---------------------|
| 逻辑值 | True | 布尔真值 |
| | False | 布尔假值 |
| | None | 表示空值或无值 |
| 逻辑运算 | and | 逻辑与运算 |
| | or | 逻辑或运算 |
| | not | 逻辑非运算 |
| 条件控制 | if | 条件判断语句 |
| | elif | 否则如果(else if 的缩写) |
| | else | 否则分支 |
| 循环控制 | for | 迭代循环 |
| | while | 条件循环 |
| | break | 跳出循环 |
| | continue | 跳过当前循环的剩余部分,进入下一次迭代 |
| 异常处理 | try | 尝试执行代码块 |
| | except | 捕获异常 |
| | finally | 无论是否发生异常都会执行的代码块 |
| | raise | 抛出异常 |
| 函数定义 | def | 定义函数 |
| | return | 从函数返回值 |
| | lambda | 创建匿名函数 |
| 类与对象 | class | 定义类 |
| | del | 删除对象引用 |
| 模块导入 | import | 导入模块 |
| | from | 从模块导入特定部分 |
| | as | 为导入的模块或对象创建别名 |
| 作用域 | global | 声明全局变量 |
| | nonlocal | 声明非局部变量(用于嵌套函数) |
| 异步编程 | async | 声明异步函数 |
| | await | 等待异步操作完成 |
| 其他 | assert | 断言,用于测试条件是否为真 |
| | in | 检查成员关系 |
| | is | 检查对象身份(是否是同一个对象) |
| | pass | 空语句,用于占位 |
| | with | 上下文管理器,用于资源管理 |
| | yield | 从生成器函数返回 |

2、注释

  • Python中单行注释以 # 开头
  • 多行注释可以用多个 # 号,还有 ''' 和 """
python 复制代码
#!/usr/bin/python3
 
# 第一个注释
# 第二个注释
 
'''
第三注释
第四注释
'''
 
"""
第五注释
第六注释
"""
print ("Hello, Python!")

3、行与缩进

  • python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 。

    缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。实例如下:

python 复制代码
if True:
    print ("True")
else:
    print ("False")

4、输出

print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="":

python 复制代码
#!/usr/bin/python3
 
x="a"
y="b"
# 换行输出
print( x )
print( y )
 
print('---------')
# 不换行输出
print( x, end=" " )
print( y, end=" " )
print()

5、import 与 from...import

在 python 用 import 或者 from...import 来导入相应的模块。

将整个模块(somemodule)导入,格式为: import somemodule

从某个模块中导入某个函数,格式为: from somemodule import somefunction

从某个模块中导入多个函数,格式为:

from somemodule import firstfunc, secondfunc, thirdfunc

将某个模块中的全部函数导入,格式为: from somemodule import *

python 复制代码
import sys
print('================Python import mode==========================')
print ('命令行参数为:')
for i in sys.argv:
    print (i)
print ('\n python 路径为',sys.path)


from sys import argv,path  #  导入特定的成员
 
print('================python from import===================================')
print('path:',path) # 因为已经导入path成员,所以此处引用时不需要加sys.path

二、基本数据类型:

Python3 中有 6 种标准数据类型,以及 bool 布尔类型(bool 是 int 的子类,有时单独列出):

  • Number(数字)
  • String(字符串)
  • bool(布尔类型)
  • List(列表)
  • Tuple(元组)
  • Set(集合)
  • Dictionary(字典)

按是否可变,可以分为以下两类:

  • **不可变数据(4 个):**Number(数字)、String(字符串)、bool(布尔)、Tuple(元组)
  • **可变数据(3 个):**List(列表)、Dictionary(字典)、Set(集合)

此外还有一些高级的数据类型,如字节数组类型 bytes。

1、Number(数字)

Python3 支持 int、float、bool、complex(复数)

在 Python 3 里,只有一种整数类型 int,表示为长整型,没有 Python 2 中的 Long。

  • int(x) 将x转换为一个整数。

  • float(x) 将x转换到一个浮点数。

  • complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。

  • complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。

|------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------|
| abs(x) | 返回数字的绝对值,如abs(-10) 返回 10 |
| ceil(x) | 返回数字的上入整数,如math.ceil(4.1) 返回 5 |
| cmp(x, y) | 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。 Python 3 已废弃,使用 (x>y)-(x<y) 替换。 |
| exp(x) | 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045 |
| fabs(x) | 以浮点数形式返回数字的绝对值,如math.fabs(-10) 返回10.0 |
| floor(x) | 返回数字的下舍整数,如math.floor(4.9)返回 4 |
| log(x) | 如math.log(math.e)返回1.0,math.log(100,10)返回2.0 |
| log10(x) | 返回以10为基数的x的对数,如math.log10(100)返回 2.0 |
| max(x1, x2,...) | 返回给定参数的最大值,参数可以为序列。 |
| min(x1, x2,...) | 返回给定参数的最小值,参数可以为序列。 |
| modf(x) | 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。 |
| pow(x, y) | x**y 运算后的值。 |
| round(x ,n) | 返回浮点数 x 的四舍五入值,如给出 n 值,则代表舍入到小数点后的位数。 其实准确的说是保留值将保留到离上一位更近的一端。 |
| sqrt(x) | 返回数字x的平方根。 |
| choice(seq) | 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。 |
| randrange (start, stop ,step) | 从指定范围内,按指定基数递增的集合中获取一个随机数,基数默认值为 1 |
| random() | 随机生成下一个实数,它在0,1)范围内。 | | [seed(\[x)](https://www.runoob.com/python3/python3-func-number-seed.html "seed([x])") | 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。 |
| shuffle(lst) | 将序列的所有元素随机排序 |
| uniform(x, y) | 随机生成下一个实数,它在x,y范围内。 |

2、String(字符串)

Python 中的字符串用单引号 ' 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符。

字符串截取的语法格式如下:

复制代码
变量[头下标:尾下标]

索引值以 0 为开始值,-1 为从末尾开始的位置。

加号 + 是字符串的连接符,星号 * 表示复制当前字符串,与之结合的数字为复制的次数。

Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。

在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。

python 复制代码
#!/usr/bin/python3
 
print ("我叫 %s 今年 %d 岁!" % ('小明', 10))

python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。

python 复制代码
#!/usr/bin/python3
 
para_str = """这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
print (para_str)

f-string

f-string 是 python3.6 之后版本添加的,称之为字面量格式化字符串,是新的格式化字符串的语法。

python 复制代码
>>> name = 'Runoob'
>>> 'Hello %s' % name
'Hello Runoob'

>>> name = 'Runoob'
>>> f'Hello {name}'  # 替换变量
'Hello Runoob'
>>> f'{1+2}'         # 使用表达式
'3'

>>> w = {'name': 'Runoob', 'url': 'www.runoob.com'}
>>> f'{w["name"]}: {w["url"]}'
'Runoob: www.runoob.com'

在 Python 3.8 的版本中可以使用 = 符号来拼接运算表达式与结果:

python 复制代码
>>> x = 1
>>> print(f'{x+1}')   # Python 3.6
2

>>> x = 1
>>> print(f'{x+1=}')   # Python 3.8
x+1=2

在Python3中,所有的字符串都是Unicode字符串。

3、bool(布尔类型)

布尔类型即 True 或 False。在 Python 中,True 和 False 都是关键字,表示布尔值。

特点:

  • 布尔类型只有两个值:True 和 False。
  • bool 是 int 的子类,因此布尔值可以被看作整数来使用,其中 True 等价于 1,False 等价于 0。
  • 布尔类型可以和其他数据类型进行比较,比如数字、字符串等。在比较时,Python 会将 True 视为 1,False 视为 0。
  • 布尔类型可以和逻辑运算符一起使用,包括 andornot,用来组合多个布尔表达式。
  • 布尔类型也可以被转换成其他数据类型,比如整数、浮点数和字符串。在转换时,True 会被转换成 1,False 会被转换成 0。
  • 可以使用 bool() 函数将其他类型的值转换为布尔值。以下值转换为布尔值时为 FalseNoneFalse、零(00.00j)、空序列(如 ''()[])和空映射(如 {})。其他所有值转换为布尔值时均为 True

4、List(列表)

List(列表)是 Python 中使用最频繁的数据类型。

列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字、字符串,甚至可以包含列表(即嵌套列表)。

列表写在方括号 \[\] 之间,用逗号分隔开的元素列表。

和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

列表截取的语法格式如下:

复制代码
变量[头下标:尾下标]

索引值以 0 为开始值,-1 为从末尾的开始位置。

加号 + 是列表连接运算符,星号 * 是重复操作。

列表脚本操作符:

|-----------------------------------------|--------------------------------|------------|
| len(1, 2, 3) | 3 | 长度 |
| 1, 2, 3 + 4, 5, 6 | 1, 2, 3, 4, 5, 6 | 组合 |
| 'Hi!' * 4 | 'Hi!', 'Hi!', 'Hi!', 'Hi!' | 重复 |
| 3 in 1, 2, 3 | True | 元素是否存在于列表中 |
| for x in 1, 2, 3: print(x, end=" ") | 1 2 3 | 迭代 |

相关方法:

|----|-------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 | list.append(obj) 在列表末尾添加新的对象 |
| 2 | list.count(obj) 统计某个元素在列表中出现的次数 |
| 3 | list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
| 4 | list.index(obj) 从列表中找出某个值第一个匹配项的索引位置 |
| 5 | list.insert(index, obj) 将对象插入列表 |
| 6 | list.pop(index=-1) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
| 7 | list.remove(obj) 移除列表中某个值的第一个匹配项 |
| 8 | list.reverse() 反向列表中元素 |
| 9 | list.sort( key=None, reverse=False) 对原列表进行排序 |
| 10 | list.clear() 清空列表 |
| 11 | list.copy() 复制列表 |

5、Tuple(元组)

元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。元组中的元素类型也可以不相同。

6、Set(集合)

Python 中的集合(Set)是一种无序、可变的数据类型,用于存储唯一的元素。集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。

在 Python 中,集合使用大括号 {} 表示,元素之间用逗号 , 分隔。也可以使用 set() 函数创建集合。

|------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------|
| add() | 为集合添加元素 |
| clear() | 移除集合中的所有元素 |
| copy() | 拷贝一个集合 |
| difference() | 返回多个集合的差集 |
| difference_update() | 移除集合中的元素,该元素在指定的集合也存在。 |
| discard() | 删除集合中指定的元素,而且不报错 |
| intersection() | 返回集合的交集 |
| intersection_update() | 返回集合的交集。 |
| isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
| issubset() | 判断指定集合是否为该方法参数集合的子集。 |
| issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
| pop() | 随机移除元素 |
| remove() | 移除指定元素,不存在会报错 |
| symmetric_difference() | 返回两个集合中不重复的元素集合。 |
| symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
| union() | 返回两个集合的并集 |
| update() | 给集合添加元素 |
| len() | 计算集合元素个数 |

7、Dictionary(字典)

字典(dictionary)是 Python 中另一个非常有用的内置数据类型。

字典是一种映射类型,用 {} 标识,它是一个 键(key) : 值(value) 的集合。键(key) 必须使用不可变类型,且在同一个字典中键必须是唯一的。

能删单一的元素也能清空字典,清空只需一项操作。

显式删除一个字典用del命令,如下实例:

python 复制代码
#!/usr/bin/python3
 
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
 
del tinydict['Name'] # 删除键 'Name'
tinydict.clear()     # 清空字典
del tinydict         # 删除字典
 
print ("tinydict['Age']: ", tinydict['Age'])
print ("tinydict['School']: ", tinydict['School'])

两个重要的点需要记住:

1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住。

2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行。

函数:

|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 | dict.clear() 删除字典内所有元素 |
| 2 | dict.copy() 返回一个字典的浅复制 |
| 3 | dict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
| 4 | dict.get(key, default=None) 返回指定键的值,如果键不在字典中返回 default 设置的默认值 |
| 5 | key in dict 如果键在字典dict里返回true,否则返回false |
| 6 | dict.items() 以列表返回一个视图对象 |
| 7 | dict.keys() 返回一个视图对象 |
| 8 | dict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
| 9 | dict.update(dict2) 把字典dict2的键/值对更新到dict里 |
| 10 | dict.values() 返回一个视图对象 |
| 11 | dict.pop(key,default) 删除字典 key(键)所对应的值,返回被删除的值。 |
| 12 | dict.popitem() 返回并删除字典中的最后一对键和值。 |

8、bytes 类型

在 Python3 中,bytes 类型表示的是不可变的二进制序列(byte sequence)。与字符串类型不同的是,bytes 类型中的元素是整数值(0 到 255 之间的整数),而不是 Unicode 字符。

bytes 类型通常用于处理二进制数据,比如图像文件、音频文件、视频文件等。在网络编程中,也经常使用 bytes 类型来传输二进制数据。

创建 bytes 对象最常见的方式是使用 b 前缀:

python 复制代码
x = b"hello"           # 使用 b 前缀创建 bytes 对象
print(x)               # b'hello'
print(type(x))         # <class 'bytes'>
print(x[0])            # 104('h' 的 ASCII 值,bytes 元素是整数)

9、Python 数据类型转换

|--------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------|
| int(x ,base) | 将 x 转换为一个整数 |
| float(x) | 将 x 转换为一个浮点数 |
| complex(real ,imag) | 创建一个复数 |
| str(x) | 将对象 x 转换为字符串 |
| repr(x) | 将对象 x 转换为表达式字符串 |
| eval(str) | 计算字符串中的有效 Python 表达式,并返回一个对象 |
| tuple(s) | 将序列 s 转换为一个元组 |
| list(s) | 将序列 s 转换为一个列表 |
| set(s) | 转换为可变集合 |
| dict(d) | 创建一个字典。d 必须是一个 (key, value) 元组序列。 |
| frozenset(s) | 转换为不可变集合 |
| chr(x) | 将一个整数转换为对应的字符 |
| ord(x) | 将一个字符转换为它的整数值(Unicode 码点) |
| hex(x) | 将一个整数转换为十六进制字符串 |
| oct(x) | 将一个整数转换为八进制字符串 |
| bool(x) | 将对象 x 转换为布尔值(True 或 False) |
| bytes(source\[, encoding\[, errors]]) | 将对象转换为不可变字节序列 |
| bytearray(source\[, encoding\[, errors]]) | 将对象转换为可变字节数组 |
| memoryview(obj) | 返回给定参数的内存视图对象(不复制数据) |
| bin(x) | 将一个整数转换为一个二进制字符串 |
| ascii(x) | 返回对象的 ASCII 表示,非 ASCII 字符会被转义 |

三、运算符:

1、算术运算符

|------|---------------------------|---------------------------------|
| + | 加 - 两个对象相加 | a + b 输出结果 31 |
| - | 减 - 得到负数或是一个数减去另一个数 | a - b 输出结果 -11 |
| * | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | a * b 输出结果 210 |
| / | 除 - x 除以 y | b / a 输出结果 2.1 |
| % | 取模 - 返回除法的余数 | b % a 输出结果 1 |
| ** | 幂 - 返回x的y次幂 | a**b 为10的21次方 |
| // | 取整除 - 往小的方向取整数 | >>> 9//2 4 >>> -9//2 -5 |

2、比较运算符

|-----|-----------------------------------------------------------------------|---------------------|
| == | 等于 - 比较对象是否相等 | (a == b) 返回 False。 |
| != | 不等于 - 比较两个对象是否不相等 | (a != b) 返回 True。 |
| > | 大于 - 返回x是否大于y | (a > b) 返回 False。 |
| < | 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 | (a < b) 返回 True。 |
| >= | 大于等于 - 返回x是否大于等于y。 | (a >= b) 返回 False。 |
| <= | 小于等于 - 返回x是否小于等于y。 | (a <= b) 返回 True。 |

3、赋值运算符

|-------|------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|
| = | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
| += | 加法赋值运算符 | c += a 等效于 c = c + a |
| -= | 减法赋值运算符 | c -= a 等效于 c = c - a |
| *= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
| /= | 除法赋值运算符 | c /= a 等效于 c = c / a |
| %= | 取模赋值运算符 | c %= a 等效于 c = c % a |
| **= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
| //= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
| := | 海象运算符,这个运算符的主要目的是在表达式中同时进行赋值和返回赋值的值。Python3.8 版本新增运算符。 | 在这个示例中,赋值表达式可以避免调用 len() 两次: if (n := len(a)) > 10: print(f"List is too long ({n} elements, expected <= 10)") |

4、逻辑运算符

Python语言支持逻辑运算符,以下假设变量 a 为 10, b为 20:

|-----|---------|------------------------------------------------------|-----------------------|
| and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 x 的值,否则返回 y 的计算值。 | (a and b) 返回 20。 |
| or | x or y | 布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。 | (a or b) 返回 10。 |
| not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 False |

5、成员运算符

|--------|-----------------------------------|------------------------------------|
| in | 如果在指定的序列中找到值返回 True,否则返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 |
| not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。 |

6、身份运算符

|--------|---------------------------|---------------------------------------------------------------------------|
| is | is 是判断两个标识符是不是引用自一个对象 | x is y , 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False |
| is not | is not 是判断两个标识符是不是引用自不同对象 | x is not y , 类似 id(x) != id(y)。如果引用的不是同一个对象则返回结果 True,否则返回 False。 |