Python一些简单基础的模板化语法

news/2024/9/18 3:50:31/文章来源:https://www.cnblogs.com/yigehulu/p/18349291

字符串的格式化

%s:可以接收任何类型的传值(%d只可以接收整型int)

  • 单个值

    "my age is %s" %"18.56"
    
  • 按照值对应

    res = "my name is %s,my age is %s" %("xj",18)
    
  • 按照字典传值

    res = "my name is  %(name)s,my name is %(age)s" % {"age": "Day23", "name": "xj"}
    
  • 显示%

    "成功的概率%s%%" %(70)
    

str.format:python 2.6以后兼容性最好

  • 类似%s的用法

    "my name is {},my age is {}".format("xingjie",Day23)
    
  • 索引用法,按照位置传值

    "my name is {0}{0},my age is {1}{1}".format("xingjie",Day23)
    
  • 字典用法,打破位置限制,按照key=value

    "my name is {name},my age is {age}".format(name="xingjie1",age=223)
    
格式化填充
  • 表示一共输出十个字符,在x变量右边补充到十个字符

    print("{x:=<10}".format(x="开始"))
    
  • 表示一共输出十个字符,在x变量左边补充到十个字符

    print("{x:=>10}".format(x="结束"))
    
  • 表示一共输出十个字符,在x变量居中补充到十个字符

    print("{x:=^10}".format(x="过程"))
    
  • 打印进度条效果

    tsize = 485218 #相差太大看不出效果
    dsize = 0
    while dsize < tsize:dsize+=1024psize=round(dsize/tsize,2)  # round(a,n)数字a保留n位小数if psize <= 1:num=int(psize*100)time.sleep(0.3)print('\r[%-100s]' %(num*'#'),'%s%%' %(num),end='')else:break
    
保留小数点
  • ****
    print("{salary:.3f}".format(salary=123.1234567))
    

f:python3.5以后支持

  • 直接传值

    x = "xj"
    y =18
    res = f"my name is {x},my age is {y}"
    
  • 多显示一个{}

    x = "xj"
    y =18
    res =f"姓名是{{{x}}},年龄是{{{y}}}"
    
  • {}内可以当作表达式运行

    a=f"{10+3}"
    

常用运算符(加减乘除不写)

算数运算符

print(10 / 3)#结果带小数print(10 // 3)#结果只保留整数部分print((11 % 2) )#取模,取余数print(10 ** 3)#10的三次方

赋值运算符

###不仅可以是加,减,乘,除,取模,次方,都可以
age += 1  

列表和字典

列表

l = [11, 22, 'hello', 44]

  • 添加

    l.append(55)   
    
  • 插入

    l.insert(3,'world')   ###在索引为3的位置上新增'world'
    
  • 删除

    ### 单纯的删除,无法赋值
    del l[2]### 根据索引删除
    l.pop(3)
    res=l.pop() #不指定索引默认删除最后一个,有返回值(返回被删除的值),能被赋值### 根据列表的值删除,返回值为None
    l.remove([1,2,3])
    
  • 寻找元素所在的位置,找不到抛错

    l.index(44)
    

字典

  • 构造

    info=[['name','xj'],('age',18),['gender','male']
    ]
    d1=dict(info)
    
  • 初始化

    keys=['name','age','gender']
    d={}d={}.fromkeys(keys,None)
    

d1 = {'name': 'xj', 'age': 18, 'gender': 'male'}

  • 取值

    ###取key为‘name’的值,key不存在报错,也能赋值
    d1['name']  ###取key为‘name’的值,key不存在报错###取key为‘stu’的值,key不存在返回None
    d1.get('stu')
    
  • 删除

    ### 单纯删除
    del d1['age']### pop删除:根据key删除元素,返回值为key对应的value
    d1.pop('age')### popitem,随机删除,返回删除的元组
    d1.popitem()
    
  • 新增

    ### 将d1新字典覆盖到d的老字典中,同一个key时,以新字典的值为准
    d={'k1':1,'k2':2,'k3':4}
    d.update(d1)
    

函数

  • 装饰器模版
def outter(func):def wrapper(*args,**kwargs):#    1.调用原函数#    2.为其增加新功能res=func(*args,**kwargs)return resreturn wrapper

表达式

  • 三元表达式:返回值 if判断 else 返回值

    x=1
    y=2
    res='xing' if x>y else 'jie'
    
  • 列表生成式:[expression for item1 in iterable1 if condition1]

    ### 列表
    l=['alex_dsb','lxx_dsb','wxx_dsb','xxq_dsb','jack','rose']
    new_l=[name for name in l if name.endswith('dsb')]
    new_ll=[name.upper() for name in l  ]
    new_lll=[name.strip('_dsb') for name in l ]### 字典
    keys=['name','xj','gender']
    dict={key:None for key in keys}items=[('name','xj'),('age',18),('gender','male')]
    res={k:v for k,v in items if k!='gender'}
    

函数式

  • 匿名函数:lambda
    ## 定义匿名函数
    lambda x,y:x+y #默认带return,接收x,y,然后运行x+y,将此结果当作返回值返回## 调用匿名函数
    # 1.用函数方式调用
    res=(lambda x,y:x+y)(1,2)# 2.复制给函数名,调用
    func=lambda x,y:x+y## 比较value的大小,返回相应的key值(max,min,sort一样的使用方法)
    salaries = {'a': 19000, 'b': 300, 'c': 80090, 'd': 7000}
    res=max(salaries,key=lambda k:salaries[k] )
    

模块

  • 使用
    # if __name__ == '__main__': #主程序
    #     foo() #在被当做脚本执行时,执行此处的代码# 1.当foo.py被当成程序运行时,__name__的值为'__main__'
    # 2.当foo.py被当成模块运行时,__name__的值为'foo'
    

时间模块:time

  • time.time()时间戳:从1970年到现在经过的秒数

  • time.strftime():按照某种格式显示时间

    # 1.struct_time 转 时间戳
    s_time=time.localtime()
    print(s_time)
    print(time.mktime(s_time))
    print(time.time())# 2.时间戳 转 struct_time
    tp_time=time.time()
    print(time.localtime(tp_time))print(time.localtime())  #当地时区,上海
    print(time.gmtime())  #世界时区
    

random模块

  • random.random():(0,1)的随机小数

  • random.randint(m,n):(m,n)的随机整数,包括1,7

  • random.randrange(m,n,i):(m,n)的随机整数,包括m,n,依次增加i

  • random.randrange(m,n):(m,n)的随机整数,顾头不顾尾

  • random.choice([11,'aa',22,'bb',33,'cc']):随机从列表中抽取,包括字符串,整型

  • random.sample([11,'aa',22,'bb',33,'cc'],3)):必需指定取值个数,从列表中随机取出3个值

  • random.uniform(1,3):随机取出大于1,小于3的小数

  • 随机验证码,字母chr(65,90)26个大写字母,chr(97,122)26个小写字母

    def make_code(n):res=''for i in range(n):Char=chr(random.randint(65,90))char=chr(random.randint(97,122))num=str(random.randint(0,9))res+=random.choice([Char,char,num])print(res)
    

os模块

  • os.sep:输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"

  • os.linesep:输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"

  • os.pathsep:输出用于分割文件路径的字符串 win下为;,Linux下为:

  • os.name:输出字符串指示当前使用平台。win->'nt'; Linux->'posix'

  • os.environ:获取系统环境变量

  • os.getcwd()获取当前工作目录,即当前python脚本工作的目录路径

  • os.chdir():改变当前脚本工作目录;相当于shell下cd

    os.chdir('E:/StudyProject/Day12')
    
  • os.curdir:返回当前目录: ('.')(显示当前所在目录)

  • os.pardir:windows返回的默认值是..

  • os.path.abspath(os.pardir):返回path规范化的绝对路径

  • os.makedirs():递归在当前目录下生成文件夹,/,windows系统也不要用\

    os.makedirs('test_father/test_son')
    
  • os.mkdir():生成单级目录;相当于shell中mkdir dirname

    os.mkdir('father')
    
  • os.removedirs():删除目录,只能删除一层目录

    os.removedirs('test_son')
    
  • os.remove():删除指定路径下文件,不能以逗号隔开写多个文件

    os.remove('./test_father/test.txt')
    
  • os.removedirs():若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推

    os.removedirs('./test_father/test_son')
    
  • os.rmdir():删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname

    os.rmdir('father')
    
  • os.rename():重命名文件,目录,rename 和renames用法差不多

    os.rename('../Test','../作业')
    os.renames('test.txt','../作业/write.txt')
    
  • os.path.getsize();显示文件大小

    print(os.path.getsize('a.txt'))
    
  • os.path.getatime():显示文件时间

    print(os.path.getatime('a.txt'))
    

shutil模块:可以看做是OS模块的补充,它提供了对文件(夹)复制,移动,删除,压缩和解压缩的方法

  • shutil.copyfileobj():将文件内容拷贝到另一文件中

    shutil.copyfileobj(open('father/test.txt','r'),open('father/b.txt','w'))
    
  • shutil.copyfile():拷贝文件

    shutil.copyfile('father/test.txt','../Test/father.txt')
    
  • shutil.copymode():仅拷贝权限。内容、组、用户均不变,目标文件必需存在

    shutil.copymode('father/test.txt','../Test/father.txt')
    
  • shutil.copystat(src, dst):拷贝文件和状态信息

  • shutil.copy(src, dst):递归的去拷贝文件夹

  • shutil.copy2(src, dst):拷贝文件和状态信息

  • shutil.ignore_patterns(*patterns):递归的去拷贝文件夹

  • shutil.copytree(src, dst, symlinks=False, ignore=None):递归的去拷贝文件夹

  • shutil.rmtree(path[, ignore_errors[, onerror]]):递归的去删除文件

  • shutil.move(src, dst):递归的去移动文件,它类似mv命令,其实就是重命名

  • shutil.make_archive(base_name, format,...):创建压缩包并返回文件路径,例如:zip、tar;创建压缩包并返回文件路径,例如:zip、tar

sys模块

  • sys.argv:命令行参数List,第一个元素是程序本身路径

  • sys.version;获得Python解释器版本

  • sys.path:解释器路径

  • sys.platform:返回操作系统平台名称

json模块

import json
###python 转换成 json
l=['a',1,True,False,None]
l_j=json.dumps(l)
print(l_j,type(l_j)) # ["a", 1, true, false, null] <class 'str'>
#序列化导入
f=open('json1.txt',mode='w')
l_j=json.dump(l,f)###json 转换成 python
l='["a", 1, true, false, null]'  #json 不认单引号,但是python,引号内外层不能一样,所以,外层要用单引号
l_p=json.loads(l)
print(l_p,type(l_p))
#反序列化
f=open("json.txt",mode='r')
res=json.load(f)

configparser:处理.ini结尾的配置文件

import configparserconfig=configparser.ConfigParser()  #实例化一个对象
config.read('php.ini')    #选择文件查看### 查看
config.sections()  #查看所有的标题
config.options('section1') #查看某个标题下,所有的key
config.items('section1') #查看某个标题下,key和value
config.get('section1','age') #查看某个标题下,key对应的value值,str格式
config.getint('section1','age') #查看某个标题下,key对应的value值,int格式
config.getfloat('section1','age') #查看某个标题下,key对应的value值,float格式
config.has_option('testtest','test') #判断某个标题下是否有某个key
config.has_section('test') #判断是否有某个标题### 修改
config.add_section('testtest') #添加一个标题
config.set('testtest','test','445') #添加某个标题下的key和value,必须是strconfig.remove_option('testtest','test') #删除某个标题下key
config.remove_section('testtest') #删除某个标题,(key和value)也被删除config.write(open('test.ini','w')) #将修改写入文件,没有这句文件不改变

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/783851.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows下cmd中cd命令不起作用的原因和解决办法

Windows下cmd中cd命令不起作用的原因和解决办法如图:cd命令无效 原因:windows系统cmd换目录跨磁盘的话需要先进行磁盘的转换

VisualStudio 产生的.sdf和.ipch文件删除、不生成

前言全局说明VisualStudio 产生的.sdf和.ipch文件删除、不生成一、说明 环境: Windows 7 旗舰版 Visual Studio 2013二、原因 某天,打算给 vs2013 的一个工程,打包备份,打包后,发现压缩包有 90MB ,看到数字确实很惊讶。 因为这个工程就是画了几个按钮的小功能,怎么会这么…

Docker 容器中镜像导出/导入

利用容器中镜像导出/导入 创建一个简单的Docker镜像 利用docker ps -a命令查看要导出的镜像。 导出 查看要导出的镜像 [root@localhost ~]# docker ps -adocker export命令进行镜像导出。 [root@localhost ~]# docker export 418ae > nginx-docker.tar导入 [vipsoft@kafka1h…

算法与数据结构——时间复杂度

时间复杂度 运行时间可以直观且准确地反映算法的效率。要准确预估一段代码的运行时间,应该进行如下操作。确定运行平台,包括硬件配置、编程语言、系统环境等,这些因素都会影响代码的运行效率。 评估各种计算操作的运行时间,例如加法操作需要1ns,乘法操作需要10ns,打印操作…

算法与数据结构——了解复杂度(迭代与递归)

复杂度分析 算法效率评估 在算法设计中,我们追求以下两个层面的目标。找到问题解法:算法需要再规定的输入范围内可靠地求得问题的正确解 寻求最优解法:同一个问题可能存在多种解法,我们希望找到尽可能高效的算法。也就是说,在能够解决问题的前提下,算法效率已经成为衡量算…

算法与数据结构——了解复杂度

复杂度分析 算法效率评估 在算法设计中,我们追求以下两个层面的目标。找到问题解法:算法需要再规定的输入范围内可靠地求得问题的正确解 寻求最优解法:同一个问题可能存在多种解法,我们希望找到尽可能高效的算法。也就是说,在能够解决问题的前提下,算法效率已经成为衡量算…

算法与数据结构——复杂度分析

复杂度分析 算法效率评估 在算法设计中,我们追求以下两个层面的目标。找到问题解法:算法需要再规定的输入范围内可靠地求得问题的正确解 寻求最优解法:同一个问题可能存在多种解法,我们希望找到尽可能高效的算法。也就是说,在能够解决问题的前提下,算法效率已经成为衡量算…

AI大模型快速生成题库-助力业务人效提升10+倍

一 现状问题 1、培训考核涉及的文件数量较多 当前,京东航空公司维修部门面临着人员规模的快速增长和持续的培训需求。根据民航局的规定,维修培训必须确保所有维修人员都能够完成对飞机维修相关文件的学习,这包括维修方案、维修工程管理手册、工作程序手册等共计12本手册以及…

存储系列之 Linux ext2 概述

来自:https://www.cnblogs.com/orange-CC/p/12673052.html存储系列之 Linux ext2 概述引言:学习经典永不过时。我们之前介绍过存储介质主要是磁盘,先介绍过物理的,后又介绍了虚拟的。保存在磁盘上的信息一般采用文件(file)为单位,磁盘上的文件必须是持久的,同时文件是通…

存储系列之 从ext2到ext3、ext4 的变化与区别

来自:https://www.cnblogs.com/orange-CC/p/12673073.html存储系列之 从ext2到ext3、ext4 的变化与区别引言:ext3 和 ext4 对 ext2 进行了增强,但是其核心设计并没有发生变化。所以建议先查看上上篇的《存储系列之 Linux ext2 概述 》,有了ext2的基础,看这篇就是so easy了…

【YashanDB知识库】生成迁移报告失败,报错未知类型错误异常:

【标题】YMP迁移 【问题分类】迁移报告 【关键字】迁移报告、未知类型错误异常 【问题描述】下载迁移报告时报错“未知类型错误异常:”,一长串英文日志报错:【问题原因分析】java版本不对,ymp仅支持java 8和11版本,用户环境用的21版本。【解决/规避方法】将java版本更新为8…

Visual Studio 2013 自定义动态库dll文件lib存放路径

前言全局说明Visual Studio 2013 自定义lib存放路径一、说明 环境: Windows 7 旗舰版 Visual Studio 2013二、设置说明 在一个功能比较全的项目中,有可能会引入第三方库来完成某些功能, 为了让目录结构、文件,清晰,会将引入的dll文件,放置到一个独立目录里。 这样方便管理…