zoukankan      html  css  js  c++  java
  • python学习第三天

    append和extend的区别

    extend可以将另一个集合中的元素逐一添加到列表中

    append向列表添加元素,将元素整体添加进去列表

    append添加的注意事项 a=a.append(b)画蛇添足,得到 none

    列表和字典

    一般列表存储相同类型信息,字典为各种真实物体建模(如表示人的字典,存储姓名、年龄等)或者存储任意两种相关的信息,如一列山脉及其海拔

    元祖

    不可以修改,不可增删,只能查

    拆包

    for A,B in infor.items():
        print("key=%s,value=%s"%(A,B))

    将字典里面的元素拆包

    每一行某个位置都添加值,鼠标拖住选中,Ctrl+D 最右边添加):Ctrl+→

    模块化

    原来程序从上到下写,功能揉到一起,想拆分很难,用函数能模块化 ,解耦,耦合性降低

    具有独立功能的代码块作为一个整体 def 函数名():

    封装为函数

    函数的返回值 

    查找bug的简单方法

    print("----1-----") 
    print("-----2-----")
    print("-----3-----")

    return 

    一个函数不能直接用另一个函数里面的变量,先用return返回到调用语句,再在函数里当做参数调用


    不要上来直接就定义函数,先按照大流程走,该定义的时候再定义

    实参和形参区别

    形参是接收的,实参是传的

    局部变量

    在一个函数里可以用,在其他函数里用不了

    全局变量

    就像DOTA,使用技能,任何人都掉血。 函数定义之前,已经有定义。

    先找局部变量,没有再找全局变量

    如果在函数中使用global对局部变量进行全局变量声明,就修改了之前的全局变量

    global a
    a = 200

    全局变量只要放在函数调用之前就行,最好放在函数定义的前面

    为了防止全局变量和局部变量名称相同,建议全局变量改名为

    g_a = 100

    代码架构

    utf-8
    import xxx 
    全局变量
    函数的定义
    函数的调用

    列表和字典可以当做全局变量直接使用,不用在函数中再用global强调

    函数缺省参数和命名参数

    不定长参数

    *args 特殊照顾 放到函数形参位置,需要特别对待 **kwargs字典类型

    def test(a,b,c=33,*args,**kwargs):
        print(a)
        print(b)
        print(c)
        print(args)
        print(kwargs)
    test(11,22,33,44,55,66,task=88,done=99)

    拆包

    def test(a,b,c=33,*args,**kwargs):
        print(a)
        print(b)
        print(c)
        print(args)
        print(kwargs)
    A = (44,55,66)
    B = {"name":"laowang","age":18}
    test(11,22,33,*A,**B)

    元祖前面加*,字典前面加**

    引用

    python中 a = 100  b = a  都是引用,指向存储100的空间而已,用 id(a)  id(b)查看存储地方,相当于便利贴

    可变不可变类型

    数字、字符串属于不可变类型  列表和字典可变,可以修改  可变类型不允许当key值

    递归

    函数调用函数自己,一定要考虑结束的情况 类似情况:APP闪退,内存溢出

    匿名函数 

    lambda 参数:式子

     func = lambda x,y:x+y

    调用格式 

    func(11,22)

    匿名函数不需要返回值return,默认返回

    交换 

    a=4 b=5交换两个变量

    方式1 

    c = 0
    c = a
    a = b
    b = c

    方式2

    a = a+b
    b = a-b
    a = a-b

    方式3

    a,b = b,a

    num+=num 和num=num+num的区别 num = [100]

    num+=num   num指向谁,就直接修改里面的变量 

    num = num+num  num的指向另外一个变量

    字符串的常见操作

    myStr.find("world")  找不到显示-1
    myStr.index("world") 找不到报错
    myStr.rfind("world") 从右边找
    myStr.rindex("world")  从右往前找
    myStr.count("itcast") 找有几个相同的xx
    myStr.replace("world,"WORLD")
    myStr.replace("world","WORLD",1)
    help(myStr,replace)
    myStr.split("")  切割,有损耗
    myStr.capitalize()  首字母大写
    myStr.title()    所有单词首字母大写
    myStr.startswith("wang")   判断以某xx开头
    myStr.endswith(".txt")    判断文件类型,结尾
    myStr.upper()   减少判断的过程
    myStr.lower()
    ljust
    rjust
    center
    
    lstrip   rstrip  strip切掉空格
    myStr.partition("wor")  根据某个xx把整体分开
    myStr rpartition("itcast")   从右边切
    file_content.splitlines()  换行切 
    
    a.isalpa()    判断纯字母
    a.isdigit()   判断纯数字
    a.isalnum()  判断是否是字母和数字的组合
    issplace 判断空格
    join 列表变字符串
    names = ["aaa","bb","c"]
    a = "_"
    a.join(names)  'aaa_bb_cc'
    将空格和	都删掉 切割content.split()就好了    正则表达式也可以切
    

    文件操作流程
    打开方式 

     f = open('test.txt', 'w')

    r 只读方式打开,默认方式

    w 打开文件只用于写入,如果文件已存在,将其覆盖。

    a 打开文件用于追加。新的内容写入到已有内容之后。

    rb 以二进制格式打开... wb....  ab....

    r+ 用于读写,文件必须存在  

    w+ 用于读写,文件不存在可以创建

    close() 关闭文件  f.close()

    文件的读写

    f = open("haha.txt","w")  
    f.write("haha")
    文件的读    f.read()     f.close()
    应用
    f = open("heihei.txt","w")
    content = f.write("sdsdsdsd")
    print(content)
    f.close()
    不能在写文件里直接读取文件 f.read() x
    应用 文件备份
    #1. 获取要复制的文件名
    old_file_name = input("请输入要复制的文件名(需要后缀):")
    #2. 打开要复制的文件
    f_read = open(old_file_name,"r")
    # new_file_name = old_file_name + "[复件]"
    position = old_file_name.rfind(".")
    new_file_name = old_file_name[:position] + "[复件]" + old_file_name[posiiton:]
    #3. 创建一个新的文件
    f_write = open("xxxx.txt","w")
    #4. 从old文件中读取数据,写入到new文件中
    content = f_read.read()
    f_write.write(cotent)
    #5.关闭两个文件
    f_read.close()
    f_write.close()
    

    读取文件的其他方式

    f.readlines()  读出来是列表 每一行占一个内容,按行读取

    f.readline()  一读读一行

    操作大文件,一般每次读一个单位

    while True:
        content = f_read.read(1024)
        if len(content) == 0:
            break
        f_write.write(content)

    文件的定位读写

    seek(offset,from) 两个参数 offset偏移量  from 方向 0:文件开头 1:当前位置 2:文件末尾

    f.read(1)     看读到哪个位置了:f.tell()    f.seek(0,2)

    使用程序完成对文件和文件夹的操作

    对文件重命名:  import os      /n os.rename("毕业论文.txt","毕业论文-最终版.txt")

    删除文件   import os  /n os.remove("毕业论文.txt")

    创建文件夹  os.mkdir("哈哈")

    获取当前目录  os.getcwd()  

    改变默认目录  os .cddir("../")

    获取文件目录,看所有文件名字  os.listdir(".")

    删除文件  os.rmdir("haha")

    批量文件重命名 

    import os
    #1. 获取一个要重命名的文件夹的名字
    folder_name = input("请输入要重命名的文件夹")
    #2. 获取该文件夹所有文件的名字
    file_names = os.listdir(folder_name)
    os.chdir(folder_name)
    #3. 对获取的名字进行重命名
    for name in file_names:
        print(name)
    os.rename(name,"[京东出品]-" + name) 或者 os.rename("./"+folder_name+"/"+name,"./"+folder_name+"/"+"[京东出品]-"+name)





  • 相关阅读:
    【转】sql 如何设计数据库表实现完整的RBAC(基于角色权限控制)
    【转】windows自带终止进程的超强命令
    【源码】 gridview 里使用checkbox
    【转】调用 开始 运行 直接执行命令
    【源码】DropDownList绑定数据
    C++ 编译器数据类型差异
    Flash 中将不透明的 Bitmap 透明化处理
    使用命令行切换IP地址
    MKV 高清视频文件分解与封装和音频编码的转换
    Visual Studio 2010 C++ 用户属性设置
  • 原文地址:https://www.cnblogs.com/wangjinliang1991/p/9898924.html
Copyright © 2011-2022 走看看