Python:基础知识详解

$课程笔记

image

python相关函数查询

官方API文档

菜鸟教程python

w3school教程python

一.基本元素

变量
  • 变量赋值:
a="hello world"
  • 变量命名:
    • 字母:a-z, A-Z, 其他语言的字母符号
    • 数字:0-9 (不可以出现在首字符)
    • 下划线:_ (可以单用)
  • 注意事项
    • 在赋值时,变量即被创建,变量的值和类
    型在赋值的时候被确定。
    • 不需要声明(declaration)
    • 变量名大小写敏感:A, a是不同的变量
    • 变量可以被重新赋值
变量类型
  • 数值类型
    • 整数 Integers: 12 0 -12987 0123 0X1A2 10294L
    大致相当于C语言的 ‘int’ 或 ‘long’
    范围可以非常大(大致无限)
    八进制数以“0” 开始 (0981 是非法的!)
    十六进制以0X开始
    • 浮点数Floating point: 12.03 1E1 -1.54E-21
    相当于C语言的double
    • 复数Complex numbers: 1+3J
    语言原生支持
    运算注意事项:
    • 操作符和C语言类似,例如 +, -, /, , %
    • 幂操作:
    **
    • 优先级和括号的作用相似
  • 逻辑类型
    • 预定义值:True False
    • 数值 0 认为是假,其他值认为是真
    • 操作符:not, and, or
    运算注意事项:
    • 比较运算获得逻辑值,运算符: <, <=, >, >=,
    ==, !=
  • 字符串类型
    • 使用函数str, int, float等类型名进行转换
b=int(a)
c=flaot(a)
d=str(a)

• 字符串的拼接和整数乘法

a="hello"+"world"
b="hello"*2
语句
  • 代码缩进
    • Python语 语 言 的 行 前 空 白 是 有 语 法 意 义 的
    • 在源文件中,应该统一采取一种缩进格式
    缩进进4个空格 ( 推 荐 标 准 )
    缩进2个空格
    缩进1制表符(tab)
    上述缩进不可以混用
    • 连续处于相同缩进层次的语句构成一个语句块(Block)
  • 条件语句
if 条件:
elif 条件:
else:
  • 循环语句(for)
    • 循环语句for
    • range(n)表明从0开始,到n-1(含)。
s = 0
for i in range(10): # 0,1,...9
    s += i
print(s)
  • 循环语句(while)
s = 0
i = 0
while s<10:
    s += i
    i += 1
print(s)
  • 导入语句
    三种写法:
from math import *
# use pi, cos, sin, ...
from math import cos, sin
# only use cos, sin
import math
# use math.cos, math.sin, ...
  • 定义函数
    • 用def定义函数,可以有参数和返回值
def double(x):
    return x * 2
turtle库详解

python:turtle库详解

python类型

类型

• 标量类型
—— 逻辑类型(bool)
—— 整数(int)、浮点数(float)、复数(complex)
—— 空 类型 型(None)
• 集合类型
—— 字符串(str)
—— 列表(list)
—— 字典(dict)
—— 元组(tuple)
—— 集合(set)
• 自定义类型
—— 类 class

数值类型

• 除法有两种:/, // 后者是整除
—— 7/3 = 2.3333333333333335
—— 7//3 = 2
—— 7.0 // 3.0 = 2.0
• 幂运算允许实数
—— 7 ** 2 = 49
—— 7 ** 0.5 = 2.6457513110645907
• 不同类型的数值运算就高不就低
—— int —— float —— complex

三元操作符

• 表达式

 x if c else y 

相当于

 c? x : y
字符串

• 字符串的进阶操作

'p' in s 

• 下标以0为开始

 s[0] # index: offset 0
 s[2:6] # slice: part of string
 s[:6] 
 s[6:]

• 逆序的下标

 s[-1]
 s[-3:-1]
 s[1:-1]
 s[-3:]

• 步长:begin🔚step

 s[::2]
 s[1::3]
 s[5:1::-1]
 "live"[::-1]
不可修改类型 Immutable

• 数值类型、字符串类型是不可修改类型
—— 后续讲解的元组(tuple)类型也是不可修改类型
• 它们的值是常数,不可以修改
—— 我们并不能把“1”修改为“2”,把“abc”改为“def”;
—— 作为值,它的含义是确定的、不变的。
• 赋值语句(Assignment)是给这些常数的值赋予不同的名称

字符串方法
 s = 'I love Python'
 s.count('on') # 查找子串出现次数
 s.find('ove') # 查找子串首见位置
 s.replace('Python', 'C++') # 替换

 three = '3'
 three.isdigit() # 是否为数字字符?
列表
  • 相关事项
    • 表(或称为列表,广义表)是python最重要
    和常用的容器类
    • 由一系列有序排列的对象构成(Ordered
    collection of objects)~ C语言的数组
    • 异构(Heterogenous),一个列表可以包含
    多种类型的对象。
 r = [1, 2.0, 3, 5] # list的字面构造
 r[1] # 正数下标自首部计数,首部为0
 r[-1] # 负数下标自尾部计数,尾部为-1
 r[1:3] # 前闭后开区间
 w = r + [10, 19] # 连接
 t = [0.0] * 10 # 重复
 len(r)
  • 列表操作
 r = [[9, 8], 2.0, 3, 'word']
 r[0:3] = [1, 2, 5, 6] # 修改片段

 r[1:3] = [] # 删除元素

 r[1:1] = [ 'new' ] # 赋值语句左右侧都是片段;等价于插入[1, 'new', 6, 'word']
 r[len(r):] = [ 'last' ] # 在尾部插入[1, 'new', 6, 'word', 'last']
  • 列表的方法
 r.insert(0, 'f') # 在0位置增加新元素'f'
 del r[0]
 r.append(9) # 尾部增加元素
 r.sort() # in-place 排序
 r.reverse() # 逆序
  • 判断两个变量是否指向同一对象
    • 利用id函数,返回对象的唯一标志
    • id(x) == id(y) 表明x和y实际上是同一对象
    • x is y
  • 列表推导
[i for i in range(9)]
[i*2 for i in range(9)]
[i for i in range(100) if '4' not in str(i)]

• 补充
—— Python 一行语句过长,可以用 \ 续行
—— 若在括号(花方圆均可)内可以自由换行

字典
  • 基本事项
    • 字典是一种数据组织方式,它根据 key获得对应的value
    • key称为键,key是无序的,或者说不关注其顺序。
    • value称为值,可以是任意的对象。
    • 字典也称为映射(mapping)、哈希(hash)表、查找表(lookup table)等。
  • 字典操作
 g = {'Tom': 'boy', 'Mary': 'girl'}
 g['Tom'] # 以key为索引
 g.has_key('Mary')
 g['Jack'] = 'boy' # 增加键值对
 del g['Tom'] # 删除键,删除键到值的绑定

 h = {'Tom': 12, 'Mary': 'good'}
 'Per' in h # 在键的集合中检测
 h.get('Per', 'unknown') # 如果查找失败则返回缺省值
 h.keys() # 由键组成的列表,顺序不确定
 h.values() # 由值组成的列表,顺序不确定
 h.items() # 顺序同上
 len(h) # 键的数量
元组
  • 注意事项
    • 与list相同,但不可改变(immutable)
    • 一旦创建,不可修改。(Once created, can’t be changed.)
 t = (1, 3, 2)
 t[1] # 3
 (a, b, c) = t # 元组赋值
 a, b, c # (1, 3, 2)
集合
  • 注意事项
    • 数学中的集合,无序,不重复(set)
    • 去重的时候很有用
s = set()
s = {1, 2, 3}
s.add(4) # {1,2,3,4}
s.add(1) # {1,2,3,4}
t = {1,2}
# &交集,|并集 - 差集
s - t # {3,4}
容器间转换

• list, set, dict 作为类型名可以实现转换
—— list(“abc”) = [“a”, “b”, “c”]
—— set([1,2,2]) = {1,2}

Python语句

pass语句

• pass是一个(占位)空语句,不做任何事情
• 动因
—— python利用缩进表达语句块,如果语句块是空的,不写会有错;
—— 这种情况下,可以写上pass

for循环语句

• for可以遍历任意的容器
—— 对词典遍历的是keys()
• range(n)是一个内置函数,返回0~n-1的列表
• range(start, stop, step)

break语句

• 跳出最内层的循环
• python没有直接跳出外层循环的语法手段
—— 通常会借助额外的flag变量
—— 异常处理

continue语句

• 它结束当前迭代,并跳到下一次迭代开头。即跳过循环体中余下的语句,但不结束循环。
• 可以用等价的if语句描述

for/while-else语句

• 只要不是break跳出循环,就执行else语句
• 相比C语言减少一个flag变量

r = [1, 3, 10, 98, -2, 48]
for i in r:
    if i < 0:
        print('input contains negative value!')
        break
else:
    print('input is OK')
exec和eval

• 动态地编写Python代码,并将其作为语句进
行执行或作为表达式进行计算
• 函数exec将字符串作为代码执行
• eval计算用字符串表示的Python表达式的值,
并返回结果。
• 如下代码来创建一个Python计算器

assert断言语句

• 要求某些条件得到满足,否则将引发异常
• 确保程序的参数合理
• 对于不合理的情况,明确引发异常

异常处理
  • 完整的异常处理
try:
    1 / 0
except NameError:
    print("Unknown variable")         出现异常时执行。。。
else:
    print("That went well!")             没有出现异常时执行
finally:
    print("Cleaning up.")             任何情况下都会执行
函数

• 函数名:规则与变量名相同
• 参数列表:调用函数时传递给它的值
—— 可以由零个,一个或者多个参数组成
—— 当有多个参数时,各个参数用逗号分隔
• 函数体:函数被调用时执行的代码
—— 由一个或多个语句组成
—— 在执行到末尾或return语句时退出函数
—— 返回结果
• 函数调用的形式
—— 函数名( 参数列表 )
• 形式参数(名):定义函数时,函数名后面圆括号中的变量。形参只在函数内部有效。
• 实际参数(值):调用函数时,函数名后面圆括号中的变量。

参数能否修改:总结

• 凡是Immutable类型的参数,传入的对象值不可能修改
• 对于Mutable类型的参数:
—— 若对形参进行赋值,并不能改变传入对象的值
—— 若对形参进行in-place的修改,则该修改也反应在传入的对象上

关键字参数的缺省值

• 可以设定一些参数的缺省值(默认值)
• 如果调用者没有提供,则使用缺失值

def hello(name, greeting="Hello"):

• 允许用户提供任意数量的参数

def sum_of_all(*values):
作用域
  • 注意事项
    • 如果没有局部变量和全局变量同名,可以直接读取全局变量。
    • 如果有一个局部变量与待访问的全局变量同名,则无法直接访问全局变量,因为它被局部变量遮住了。
    • 可以使用关键字 global(nonlocal)修饰变量名,表明和全局(外层)变量关联。
    • Python的函数可以作为返回值
匿名函数

• lambda可以用来定义函数

pow2_a = lambda x: x*x

def pow2_b(x):
      return x*x

两者功能相同

模块

• 对于稍微大型的程序,代码量较大,不宜
放在一个文件中
• 模块可以将代码分散在不同的文件

主模块
if __name__ == "__main__":
      do_something()

文本处理

字符的分类

• 数字 digits 01234567890
• 字母 letter
大写ABCDEFGHIJKLMNOPQRSTUVWXYZ
小写 abcdefghijklmnopqrstuvwxyz
• 空白字符:空格,\t\n\r\v
• 对应Unicode,上述概念有一定拓展。

字符串对象方法
  • capitalize() 字符串首字母大写
  • lower() 转为小写
  • upper() 转为大写
  • find(s)/rfind(s) 正向/逆向查找子串s的出现位置
  • count(s) 查找s出现的次数
  • strip() 移除开始和结束的空白
  • **lstrip()/rstrip()**移除开始/结束的空白
  • replace(s, r) 将子串s替换为r(缺省为全替换,可以仅替换指定次数)
  • isalpha()/isdigit() 是否是字母、数字等……
  • isupper()/Islower() 是否大写小写等….
  • startswith(s)/endswith(s) 是否以s作为字符串的开始或结尾
  • s.split(sep) 将字符串sep作为分隔符,对字符串s进行分解,返回列表
  • sep.join(parts) 将各部分用分隔符sep连接在一起
格式化

• 字符串的格式化有三种方法
• %, format, f-string

  • % 操作符
    用法: str % parameter_tuple
"the num
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JackHCC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值