python基础语法2

1. 开发环境、解释器、开发工具

  • 开发环境
    运行底层代码支持、解释器、底层源代码’
  • 解释器
    官方标配:Cpython
    编译运行解释器:Pypy
    Java混合开发:Jython
    .NET混合开发:Ironpython
    代码高亮:Ipython
    等……
  • 开发工具:编写代码的IDE工具、结合解释器解释运行python程序(Pycharm)

2. 程序结构

  • 顺序结构:
    代码逐行解释运行
  • 选择结构:
    if-else选择结构:单分支、双分支、多分支、嵌套方式
    三元操作选择结构:结果1 if 条件 else 结果2
  • 循环结构
    while循环:普通循环条件控制
    for循环:用于序列数据循环控制
    break 跳出循环
    continue 结束本次循环,进行下一次循环
    else 里的代码循环正常结束之后才会执行,break终止程序不会执行

3. 组合数据类型

  • 列表(list):可变类型、有顺序的储存多个数据
    增加数据:append()末尾追加一个数据 、extends()默认追加一组数据 insert()指定位置增加一个数据
    删除数据:根据下标/编号删除数据 del x[2] 、pop()删除列表末尾的数据、remove()删除指定的数据、clear()清空列表、del x删除列表
    修改数据:根据下标/编号,直接修改数据、x[12] = 20
    查询数据:成员运算符:o in x 、count:()查询某个数据在列表中出现的次数、index()查询某个数据在列表中出现的位置
    其他函数:sort() 列表排序、reverse()列表翻转、max(x)查询最大值、min(x)查询最小值、len(x)查询列表中元素的个数
  • 集合(set):可变类型,储存多个没有顺序、不可重复的数据
    增加数据:add()
    删除数据:pop()随机删除一个数据、remove()删除指定的数据、clear()清空集合
    修改数据:判断是否存在-> 删除->增加数据
    查询数据:成员运算符判断、遍历数据
    集合运算:并集union()、update()、差集difference()、difference_update()、交集intersection()、intersection_update()
  • 元组(tuple):不可变类型,可以储存多个有顺序可重复的数据
    增加数据:无
    删除数据:无
    修改数据:无
    查询数据:count()、index()
    其他函数:max()、max()、len()
  • 字典(dict):可变类型,利用键值对储存多个数据的组合数据类型
    循环遍历:通过遍历keys()遍历整个字典、通过遍历items()遍历整个字典、不能通过遍历values()遍历字典所有数据
    查询数据:通过key查询value(方括号语法、get()函数)
    增加数据:方括号语法(如果key值不存在,增加、如果key值存在,修改)、setdefault()函数(如果key值不存在,增加、如果key值存在,不修改)
    其他函数:keys()获取key所有的键、values()获取value所有的值、items()获取item所有的项

4. 辅助函数

  • dir()
    查询指定的某个数据~可以操作的所有函数、变量

dir(list)
[‘add’, ‘class’, ‘contains’, ‘delattr’, ‘delitem’, ‘dir’, ‘doc’, ‘eq’, ‘format’, ‘ge’, ‘getattribute’, ‘getitem’, ‘gt’, ‘hash’, ‘iadd’, ‘imul’, ‘init’, ‘init_subclass’, ‘iter’, ‘le’, ‘len’, ‘lt’, ‘mul’, ‘ne’, ‘new’, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘reversed’, ‘rmul’, ‘setattr’, ‘setitem’, ‘sizeof’, ‘str’, ‘subclasshook’, ‘append’, ‘clear’, ‘copy’, ‘count’, ‘extend’, ‘index’, ‘insert’, ‘pop’, ‘remove’, ‘reverse’, ‘sort’]

  • help()查询指定的变量、函数、类型的操作帮助手册

help(list.insert)
Help on method_descriptor:

insert(self, index, object, /)
Insert object before index

5. 函数操作

  • 函数的声明和调用
    函数
    生活中:行为,包含了一系列操作过程的行为–>通过调用行为~执行一个过程
    代码中:封装了大量代码的代码块,代码块进行了命名–>通过名称~调用执行一个函数
    声明
    def关键字:defined定义
    def 函数名称(函数中代码执行需要的参数列表):
    函数中执行的代码块
    [return 返回值]

文档中:如果在操作语法说明中出现了方括号~表示这一部分内容是可选的
调用

通过该函数名称调用执行函数中的代码

def test():
    # 函数中的代码
    pass


test()  # 调用执行test函数,执行test函数中的代码
 
test2 = test   # 将函数test赋值给变量test2,并不会执行函数test
 
test2()   # 执行test2函数~ test2中存放的是test-> 执行test()函数
  • 函数的参数:函数中的代码执行需要的数据
    参数的区分
    形式参数:函数声明时定义在函数后面括号中的参数、函数执行、这些数据不是具体的
    实际参数:调用执行函数时,在函数括号中传递的真实数据、具体的、存在的数据
    函数参数的定义
    位置参数
def test(a, b, c, d):
    print(.....)
 
# 操作过程中,调用执行时~实际参数按照形式参数的前后顺序[位置]依次赋值
 
test(1,2,3,4)

默认值参数

def test(a, b, c, d=100):
    print(.....)
 
# 操作过程中,函数声明中~某个形式参数可以直接赋值~该形式参数就是默认值参数;默认值参数可以在调用时不传递数据~使用默认数据进行运算。
 
test(1,2,3)    # d自动赋值默认100运算
test(1,2,3,4)   # d赋值4进行运算
 
 # 注意:默认值参数一般放在最后面

可变参数

def test(a, *args):     args: arguments 参数
    print(.....)
 
# 操作过程中,可以通过符号*,声明某个可以接受多个数据的可变参数~ 可变参数可以接受0~n个数据。
 
test(1,2,3)    
  # a赋值1,args赋值(2,3)
test(1,2,3,4)  
  # a赋值1, args赋值(2,3,4)
 
# 可变参数可以将接受到的多个参数~自动封装成元组进行操作。自动封装过程~某些资料:自动封箱/自动装箱
 
# 注意:可变参数一般放在最后面

关键字参数

def test(a, **kwargs):   kwargs : keyword arguments 关键字参数
    print(.....)
 
# 操作过程中,可以通过符号**,声明某个可以接受多个key-value键值对数据,并且自动装箱成字典接受到函数中进行处理
 
test(1, name="jerry", age=12)    
#  a赋值1,kwargs赋值{"name": "jerry", "age": 12}
 
 
# 注意:关键字参数一般放在最后面

万能参数

def  test(*args, **kwargs):
    pass
 
# *args可以接受任意多个的单个数据
# **kwargs可以接受任意多个的key-value键值对数据
# 按照函数调用规范,单个数据放在前面,key-value数据放在后面。所以上面的参数列表:万能参数,可以接受任意数据当成函数的参数进行处理。

强制关键字参数

def test(*, name, age):
    pass
 
 
# 声明在符号*后面的所有参数,都是强制关键字参数~
 
# 特点:一旦声明~函数中定义了的参数名称,必须在调用的时候使用它们作为key值
test(name="tom", age=100)  right
test(x="jerry", y=10)  error
 
# 理由:极大限度的提升代码的可读性

pass关键字
占位符、待开发的缩进代码

def test():
    # TODO 注释【功能描述、时间、作者】
    pass
 
 # 通过pass占位符,让声明但是还没有实现的函数~不报错。
 # 不影响整体项目的进度。
 

 # TODO注释~一种特殊的注释,表示待开发功能
 # 常规的IDE工具基本都集成了TODO注释的操作。

6. 字符串str

  • 字符串查询
    index() 查询不到:ValueError: substring not found
    rindex()、find()、rfind() 查询不到:-1
  • 字符串拆分
    split(“拆分的字符”)、rsplit()、partition(“拆分字符串”)、rpartition()
  • 字符串大小写切换
    capitalize()、swapcase()、upper()、lower()
  • 字符串对齐
    ljust(width)、rjust(width)、center(width)
  • 字符串替换
    replace(old, new)
  • 字符串内容判断
    isdigit()数字、isnumeric()数字、isalpha()字母、isalnum()字母+数字、istitle()首字母大写、islower()小写、isupper()大写
  • 字符串空格处理
    strip()剔除字符串两边的空格、lstrip()、rstrip()
  • 字符串站位
    %、format()、字符串中使用变量
  • 字符串切片(语法注意:反向切片)
    方括号
s[start, stop, step=1]
# s是个字符串
  # start开始位置
  # stop结束位置
  # step步长
 
>>> s = "he l lo  python1901"
                0123456.......
 
>>> s = "  h  e  l lo  python1901"
                0  1  2
 
s[1:] -> e l lo  python1901

7. 文件IO

  • 文件数据的输入输出
    输入:input
    输出:output
  • 涉及到的模块
    操作系统交互:os
    解释器交互:sys
    操作系统路径相关:os.path
  • 文件的操作模式
    open()函数操作文件
    mode操作模式
    (r:只读、w:只写、a:追加、t:文本、b:二进制、+:读写)
    文本文件操作
    open(file, ‘r’)打开一个文件读取文件中的数据 、
    open(file, ‘w’)打开一个文件,向文件中写入数据、
    open(file, ‘r’) == open(file, ‘rt’)
    二进制文件操作
    open(file, ‘wb’)打开一个二进制文件写入数据
    open(file, ‘rb’) 打开一个二进制文件读取数据
    通用操作函数
    读取数据:read()
    写入数据:write()
    文件操作流程
    with语法:with open(…) as f: # 操作完成之后,会自动关闭文件
    注意:程序中打开文件进行操作之后,一定要关闭文件释放资源
  • python对象的操作
    对象字符串处理操作
    python对象:字典存储
# 字典:d = dict()
# 字典-> 字符串
 
with open(file, "w") as f:
     f.write(字符串)  存储到文件中
 
# 最终:文件中存储的是字符串数据

python对象:读取数据 eval函数

with open(file, 'r') as f:
     data = f.read() # 读取数据,将文件中的字符串数据,读取到程序中->问题:字符串依旧是字符串,不是python对象
 
# eval函数:将一个字符串转换成python表达式

JSON模块对象直接操作
dump(python对象,文件)

# # 准备操作的数据
users = {'admin': {'username': 'admin', 'password': '123', 'nickname': '老刘'}}
# 1. 将程序中的数据,直接存储到文件中
# json模块的操作
with open('./data/3.1.json', 'w') as file:
    json.dump(users, file)
 
打开一个文件~ 通过json.dump函数,将该对象,添加到文件中

load(文件)

#  将文件中的数据,读取到程序中
with open('./data/3.1.json', 'r') as file:
    users = json.load(file)
    print(users, type(users))
  • python对象的序列化操作
    序列化:按照有序的方式整理数据
    反序列化:按照定义的有序方式~反向整理数据
    pickle序列化模块
    dump(python对象, 文件)
    load(文件)
    marshal序列化模块
    dump(python对象,文件)
    load(文件)
    shelve序列化模块
    sl = open(file) 打开文件进行操作
    sl[‘key’] = python对象
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值