zoukankan      html  css  js  c++  java
  • 第三章、函数编程

    (一)三元运算

    三元运算又称三目运算,对简单条件语句的简写,如:

    if 条件成立:

    val =1

    else:

    val =2

    三元运算:

    val =1 if 条件成立 else 2

     

    (二)文件处理

    f=open(file="file_path",mode='r',encoding='utf-8')

    data=f.read()

    f.close()

    1、二进制模式

    r:文本只读模式,默认将二进制转换为字符串

    rb:二进制模式读取,不进行转码,硬盘怎么存储怎么读取。如网络传输的文本或img或视频等。不写encoding参数

    2、智能检测编码工具,chardet

    chardet.detect()
    

    3、写模式操作文件:

    w:可写模式,创建新文件。有则覆盖,无责创建

    wb:二进制模式写入,无需encoding参数。写视频,图片等。

    4、追加模式:

    a:普通追加模式

    ab:二进制模式追加

    5、混合模式:

    r+:先读取内容,支持内容追加

    w+:先写入(创建)内容,支持内容读取

    6、文件操作其他方法:

    fileno()返回文件句柄在内核中的索引值,IO多路复用可用

    flush()把文件从内存buffer(缓存)里强制刷新到硬盘

    readline()只读一行,遇到 或 为止

    seek()移动光标到指定位置 ,按字节移动光标,utf-8三个字节一个字符,gbk两个字节一个字符

    seekable()判断文件是否可进行seek操作

    tell()返回光标所在位置,按字节返回光标

    truncate()按指定长度截断文件,按指定长度截取文件,均从首位截取

    writable()判断文件是否可写

    7、文件修改

    逐行,os.rename()重命名,truncate()截取

    (三)函数编程

    1、函数基本介绍

    将一组语句集合通过一个名字封装起来,想要执行这个函数,只需要调用其函数名即可。

    def sayhi():#函数名
    print("Hello,I'm nobody!")

    减少重复代码

    使程序变的可扩展,易维护

    2、函数默认参数

    形参:只有在被调用时,才分配内存单元。只在内部有效。函数调用结束返回主调用函数后不能在使用该形参变量

    实参:可以是常量、变量、表达式、函数等,无论类型,在调用时他们都必须有确定的值,以便将这些值传

    默认参数:默认参数必须跟在位置参数(非默认参数)后面

    3、函数关键参数

    只需要在调用的时候指定参数名,关键参数也必须放在位置参数之后。

    4、非固定参数

    *形参名,将参数组成元组。一般都写成*args。可直接传递列表或元组。传入列表将打包成元组的第一个参数,为避免该问题,在列表或元组前面加*符号。

    **行参名,一般写成**kwargs,单个字典传入需在实参前加**符号

    5、返回值

    默认返回None,return只能放函数最后位置,表示一个函数终止。支持任意类型数据返回,包括函数名

    6、函数局部变量

    在函数内部定义的变量称局部变量,只能在函数内部使用,函数执行完则回收。里面能调用外面参数,外面不能调用函数内部变量。如果函数内部和外部都有一个同名变量,函数将从内至外查找。

    7、函数全局变量

    定义在函数外部一级代码的变量,叫全局变量,从上至下全局可用。函数内部默认无法修改全部变量,修改默认则创建局部变量。

    8、函数内部修改全局变量

    用global关键字声明

    9、函数内部修改全局列表

    可修改列表内容,不能修改列表整体。修改整体需global关键字。

    10、函数嵌套

    函数内部再定义函数。要想执行必须调用

    11、函数作用域

    在py中,一个函数就是一个作用域。局部变量放置在其作用域中。一个变量定义完成后,作用域就已经确定

    12、匿名函数

    多行语句变为一行,减少代码量,看着更高级

    #常规函数
    def calc(x,y):
    if x < y:
    return x*y
    else:
    return x/y
    #声明匿名函数
    func=lambda x,y:x*y if x<y else x/y
    print(calc(9,8))
    print(func(9,8))

     

    和其他方法混用

    #求一个列表元素平方
    data=list(range(10))
    print(data)

    for index,i in enumerate(data):
    data[index]=i*i
    print(data)

    #匿名函数方法
    print(list(map(lambda x:x*x,data)))

    13、高阶函数

    变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接受另一个函数作为参数,这种函数称为高阶函数。

     

     

     

     

     

     

     

     

     

     

    (五)数据类型

    1、浮点数

    (1)、定义:有限小数和无线循环小数统称为浮点数

    (2)、Python中精确度:只能精确到小数点后16位,因存储结构问题,其他语言也有相似问题。

    (3)、高精度计算方法:用decimal中的getcontshext()和Decimal()方法

    2、列表

    列表是一个有序数据集合,集合内可以放任何数据,可对集合操作增删改查操作。

    (1)、创建:L1=[]或L1=list()

    (2)、查询:通过索引进行查询。查找索引值index(),只能找到第一个匹配项。统计count()方法

    (3)、切片:L2=L1[x:y:j],顾头(x)不顾尾(x)原则,j为步长

    (4)、增加:append()方法追加元素到末尾,insert(i,x)方法插入元素到指定位置,两个列表相加可用"+"符号连接,也可用L1.extend(L2)方法

    (5)、修改:L1[i]="new obj"或L1[x:y]="new obj"

    (6)、删除:L1.pop()删除末尾元素并返回该对象。L1.remove(obj)删除指定对象(查找的第一个),L1.remove(i)删除index为i的元素。Del L1删除列表L1对象,del L1[x:y]删除多个元素。清空列表L1.clear()

    (7)、循环:

    (8)、排序:L1.sort(),只能通类型排序。L1.reverse()反转序列

    (9)、copy:只能第一层列表独立即浅复制,需要整个列表对象完全独立需用导入copy模块,用copy.deepcopy()方法

    3、字符串

    字符串是一个有序的字符的集合,用于存储和表示基本的文本信息,一对单、双、三引号中间包含的内容称之为字符串。

    1、特性:

    .有序

    ‚.不可变

    2、方法:

    s.swapcase()大小写转换

    s. capitalize()首字母大写,其他小写

    s. casefold()转换成小写

    s.center()格式化字符串,指定字符串长度和两边占位符

    s.count()统计字符串,可指定统计范围

    s.endswith()判断是否以某字符结尾

    s.expandtabs()扩展table键,即指定table键的长度

    s.find()返回指定字符索引,找不到返回-1,也可指定范围

    s.format()字符串格式化,

    s.index()返回自定字符的索引,可指定开始和结束

    s.isalnum()是否是阿拉伯字符,包括数字和字母

    s.isalpha()是否全是字母

    s.isdigit()类似s.isdecimal()或s.isnumeric()是是否全是整数

    s.isidentifier()是否为可用变量名

    s.isprintable()

    s.isspace()判断是否为空格

    s.istitle()第一个字符均大写

    s.isupper()是否均为大写

    s.lower()转换为小写

    s.upper()转换为大写

    s.join()字符串拼接

    s.ljust()从左边开始,将字符串变为指定长度字符串,类似rjust()

    s.strip()去掉指定字符串,默认为空格和换行

    s.lstrip()去掉左边指定字符串rstrip()

    str.maketrans()创建对应表格

    s.translate()更具表格翻译字符串

    s.partition()以某字符串将字符串分割成两半,左边查找到的第一个字符rpartition相反

    s.replace()替换字符串,可指定更换个数

    s.rfind()查找最右边指定字符,找不到返回-1

    s.rindex()类似rfind,找不到则报错

    s.strip()根据自定字符分割成列表

    s.rstrip()默认和strip无区别

    s.splitlines()按行分割

    s.startwith()判断以某字符串开始

    s.endwith()判断以某字符结束

    s.title()变为title格式

    s.zfill()将字符串变为指定长度,不够的左边填零

    3、元组

    一旦创建,便不能再修改,也叫只读列表

    功能:

    index

    count

    切片

    ‚作用:显示告知,不能修改,如配置信息等

    4、hash

    将任意长度的消息压缩到某一固定长度的消息后再输出。不通的输入通过散列算法可能会散列成相同的输出,所以不能从散列值来唯一确定输入值。因此被hash的值必须是不可变的,如数字、字符串、元组等。

    用途:

    文件签名

    Md5加密

    密码验证

    语法:

    hash(obj)

    5、字典

    字典是一种key-value的数据类型,key必须唯一,且可hash,字典无序的,且查找速度快。

    判断是否存在:in方法

    获取:get(),有则返回,无则返回None。直接中括号获取,无则报KeyError

    删除:pop('key')删除指定key并返回key对应的value,popitem()随机删除一个,clear(),del d['key']

    多级嵌套:

    copy():类似列表copy

    values():打印所有值

    keys():打印所有key

    items():key和value组成元组,并放入一个列表中

    update():类似list中extend(),两个字典合并成一个,重复key则覆盖

    setdefault():有key则获取,无key则设置

    fromkeys():批量生成字典

    6、集合

    无序,不重复的数据集合。作用为去重(把列表变为集合自动去重)和关系测试

    列表和元组可转换为集合。

    add():增加,只能添加一个

    pop():随机删除一个值

    remove():删除指定对象,不存在则报错

    discard():删除指定对象,不存在也不报错

    update():两个集合联合在一起,可添加多个值,列表方式

    clear():清空

    关系测试:

    交集:intersection()或&

    差集:difference()或-

    并集:union()或|

    取交集相反(对称差集):symmetric_difference()

    判断是否子集:issubset()或<=

    判断是否为超集:issuperset()或>=

    判断两个集合是否相交:isdisjoint()

    (六)进制拾遗

    1、python中进制转换

    oct(int):转八进制

    hex(int):转十六进制

    bin(int):转二进制

    2、为何使用十六进制

    八进制很少使用。

    在操作系统和编码中均使用十六进制,方便查看,统一规范,便于网络抓包分析。

    3、十六进制与二进制转换

    二进制转16进制:取四合一(从左朝右取四位二进制转换成10进制)

    16进制转二进制:刚好与二进制转16进制相反

    表示:0x前缀(有时会将0忽略掉)或BH后缀

    (七)字符编码

    1、UTF是unicode编码设计得一种在存储和传输时节省空间得编码方案

    2、decode(),encode()

    3、可通过type()查看字符类型

    4、python3中文件默认为utf-8编码,字符串编码是unicode

    python2文件默认是ascii嘛,字符串默认是ascii码,若文件头有声明编码类型,则字符串编码也就是该类型。unicode类型在python2中是单独一个类型。

    5、python中bytes类型:

    、在py2中,bytes和str是一回事儿,因为要表示图片视频等二进制格式得数据,所以有bytes类型。py2以utf8编码的字符串在Windows下无法显示。decode()或声明为unicode。

    ‚、在py3中,str等于unicode

  • 相关阅读:
    2020软件工程作业04
    2020软件工程作业03
    2020软件工程作业02
    2020软件工程作业01
    问题清单
    2020软件工程个人作业06
    2020软件工程作业05
    2020软件工程作业00
    2020软件工程作业04
    2020软件工程作业03
  • 原文地址:https://www.cnblogs.com/yaya625202/p/8611518.html
Copyright © 2011-2022 走看看