美文网首页
python-基础

python-基础

作者: 小帅明3号 | 来源:发表于2020-11-21 16:02 被阅读0次

    官网下载python3.9.0,安装时勾选添加环境变量

    测试:import this 后输入文本为安装成功

    安装python编辑器-pycharm

    变量

    1.变量名仅可包含字母数字和下划线,区分大小写,不能数字开头不能纯数字
    
    2.变量不能使用关键字:False    await    else    import  pass  None    break    except  in    raise  True    class    finally  is    return  and    continue  for    lambda  try  as    def    from    nonlocal  while  assert  del    global  not    with  async    elif    if    or    yield
    
    3.赋值方式:a=b=c=1  或者  a,b,c=1,2,3  或a,b=b,a(此处a,b为同时交换,不是先a=b,再b=a)
    
    4.删除变量:del a
    

    数据类型

    1.数值、字符串、布尔值、None
    
    2.\为转义字符,保留后面一个字符,例:print("asdfadf\"dff") 结果为:asdfadf"dff
    
    '和"都可包括字符串,可根据字符串的转义字符内容灵活使用
    
    """或'''加在字符的开头结尾,可以输出带有换行符或特殊字符的长文本
    
    3.类型转换
    
    bool(0)或者bool(0.00..)返回False,bool(其他非0的值)返回True
    
    bool("")返回False,bool("里面不为空,即使是空格")返回True
    
    bool(None)返回false
    
    字符串强制转换整数:1+"1"会报错,1+int("1")才可以;也可以int("  1  "),int("  -1  "),int("  +1  ")
    
    int(9.9)=9,round(9.5)=10,round(9.449,2)=9.45
    
    字符串强制转换浮点数:float("3.123123"),float(3)=3.0
    
    数值转化为字符创:str(4)='4'
    

    运算

    1.4/2=2.0 而不是2;4//2=2;5//2=2;10/3=3.3333333333333335
    
    2.取摩:10%4=2 ;8%4=0;3%4=3;-3%4=1;  当两个数都是整数时,就是取余运算;当两个数有负数时,计算公式为:a%b=a-(a//b)*b
    
    3.0不能作为除数,也不能用来取模
    
    4.字符串只支持加法和乘法运算:"apple"*10=十个apple哈哈;字符串不能和数值进行运算,需要转换
    
    5.+=,-=, *=,**=,  a+=b就是a=a+b;3**2=3的2次方
    
    6.赋值比较运算符:==,!=,>,<,>=;100='100'返回False,即类型不相等也不行;2.0==2返回True,即4//2==2
    
    7.逻辑运算符:and,or,not; not 0和not ""是True
    
    8.条件运算:if : elif : else : 需要通过空格缩进确定分支内的运行语句条数
    
    9.分支里什么都不干,执行一个空语句用:pass
    
    10.逻辑运算后面的会自动将数据进行类型转换成True或False
    
    11.循环:
    
       while 批次执行
    
    for 循环遍历集合内容或某个范围:for iin "123": 或者for iin         range(3):
    
    12.解压符:
    
        a=[1,2,3]  *a=a[0],[1],[2]
    
    ##字符串
    
    1.格式化1:占位符%d,%f,%.f,%s,%%
    
        例: print("%d年%s公司年收入增长了%.4f%%" %(123,"阿伯    次",3.42)) 输出结果:123年阿伯次公司年收入增长了3.4200%
    
    2.格式化2:format函数
        print('{:,}'.format(1231234.333))输出结果:1,231,234.333
    print('{0}年{1}公司年收入增长了{2}%'.format(123,"阿博茨",3.523))输出结果:123年阿博茨公司年收入增长了3.523%
    print('{0}今年吃了{1}斤翔和{1:,}斤肉'.format('嘿嘿嘿',12323))输出结果:嘿嘿嘿今年吃了12323斤翔和12,323斤肉
    3.索引和切片
    
        s="asdfqwer"   s[0]=‘a’;s[-1]='r';s[0:3]='asd';s[1:3]='sd'; 
    
        s[0:]=s[:8]=s[:12312]=s[:]=s;
    
        从头到尾每隔两个截一个:s[::2]='adqe'; s[3:8:2]='fwr'
    
        倒序取出:s[::-1]='rewqfdsa'  s[::-2]='rwfs'
    
    4.函数
    
        去除头和尾的不限数量的空格:" 123".strip()='123';"print("\n123\n 3\t 123\n")".strip()也生效;左右去除:lstrip(),rstrip()
    
        大小写转换:全部字母转大小写:lower();upper();首字母:    capitalize();每个单词的首字母大写:title()
    
        查找替换:find();index();replace()
    
        字符串长度:len("231321")
    
        拼接:'1231'.join('fff')
    

    元组-tuple

    1.元组是不可变序列,一般用来读数 
    
    2.t=('apple', 'AAA', 'ida', tuple('231'), 33)
    
    print(t[0],t[2],t[-2])=apple ida ('2', '3', '1');print(t[:4])=('apple', 'AAA', 'ida', ('2', '3', '1'))
    
    3.print(" ",join(t))="apple+AAA+ida。。。"
    

    列表-list

    1.和元祖区别就是可变,外面是[]
    
    1.1只有列表可排序,元组、字典、集合不能排序
    
    2.t=['1',3224,(12,23,2),[1,2,3]]    
    
    3.增、删、改元素:t.append('f')在最后添加一个元素,加多个:t.extend(['a','b','c']);del t[0];t[0]='A'
    
    4.指定位置插入:t.insert(0.'A')
    
    5.删除最后一位:t.pop();应用在即取即用,只用一次的场景
    
    6.删除指定位置:t.pop(2)
    
    7.删除固定第一个出现的值:t.remove('a'),应用在不确定值得索引位置
    
    8.反转顺序:t.reverse()
    
    9.列表表达式:t=list(i for i in range(20) if i%2==0)=list(i*2 for i in range(10))=list(i for i in range(0,20,2)) = [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
    
        比如:s_l=[(name,sum(quater))for name,quaterin sales]
    
                   s_l.sort(reverse=True,key=lambda x:x[1])=[('Jokey', 3032), ('Lili', 2554)]
    10.获得列表个数:len(list)
    

    字典-dict

    1.键值对的方式,key唯一且区分大小写,
    
    sales = {
    
        'Peter': sum((45, 75, 123)),
    
        'Lili': (475, 756, 1323),
    
        'Jokey': (454, 755, 1823),
    
    }
    
    print(sales['Peter'])=243
    
    2.增加和修改 sales['mike']=0 ,若存在修改,若不存在新增
    
    3.删除 del  sales['mike']
    
    4.元组和列表都能转成字典:sales1=dict(sales),若元组和列表有重复键值,用最后的
    
    5.遍历:用item函数将字段转为元组再遍历:for key,value in sales.items()
    
    6.sales['mike']不存在会报错,不报错: sales.get('mike',默认值)=默认值
    
    7.sales.keys()  sales.values()
    

    集合

    1.集合是无序的,元素不重复,和字典的区别应该就全是key
    
    sets={2,3,4,5}
    
    2.删除:sets.discard('apple');删除并且能返回值num=sets.pop()
    
    3.求交集:set1.intersection(set2)
    
    4.求并集:set1.union(set2)
    
    5.求子、父集:issubset  issuperset
    

    函数

    1.def f1(adf):
    
            print("asdf"+dse)
    
    2.函数返回值,return后面的语句不执行
    
    3.匿名函数:即定义函数的快捷方式,关键字:lambda;格式:lambda 参数:方法体;省略了函数名和return
    
        lambda n:n*n 就等于 def dad(n) return n*n
    
        x=lambda n:n*n  这样赋值后,x就是一个函数变量,print(x(3))=9
    

    面向对象

    1.类-class:类是创建对象的模板
    
    2.对象:对象是类的实例化;
    
    3.查看对象的类型:type(dog)或者 isinstance(dog,Dog)=True;isinstance(1,int)=True;isinstance([],list)=True;
    
    4.类的初始化函数(构造函数):__init__(self);里面的属性用来初始化类的属性;函数的参数新增了,实例化时一定要加上比如:dog=Dog(a,b,c) dog=Dog()
    

    模块

    1.模块导入语句要写在文件最前面
    
        from math import sqrt  从哪里导什么
    
        from math import sqrt as sq 从哪里导什么给个别名
    
    2.时间模块
    
        from datetime import datetime, timedelta
    
        import time
    
        返回当前时间的datetime对象
    
        now= datetime.now()
    
        去年的今天
    
        last_year = now.replace(year=2019)
    
        print(last_year.strftime('%Y-%m-%d %H:%M:%S'))
    
        明年的今天
    
        print(now + delta)
    
        20天以后的时间
    
        print(now + timedelta(days=20))
    
        两个半小时之前的时间
    
        print(now - timedelta(hours=2, minutes=30))
    
    3.随机数模块
    
        random.random();random.randint(1,100)
    
        az=[chr(i) for i in range(65,65+26)]
    
        random.choices(az,k=4)=['Y', 'C', 'Z', 'J']   可能会重复
    
        random.sample(az,k=4)=['N', 'K', 'Y', 'W']  肯定不重复
    
        random.shuffle(az)  随机打乱列表
    
    4.OS模块
    
        import os
    
        from shutilimport copy
    
        获取当前的工作目录:os.getcwd()
    
        创建目录,只能创建一层目录:os.mkdir(os.getcwd() + '/test')
    
        创建多层目录:os.makedirs(os.getcwd() + '/def/123')
    
        列出当前目录或根目录所有目录:os.listdir(os.getcwd());os.listdir('/')    
    
        .表示当前目录,..表示父级目录:os.path.abspath('..')
    
        获取当前路径+文件:cur_file =os.path.abspath(__file__)
    
        获取当前路径下所有文件(不要文件夹):
    
            file_list=[i for i in os.walk(file_pt)]
    
            返回 root 当前目录路径 dirs 当前路径下所有子目录 files 当前路径下所有非目录子文件
    
        判断“文件“、“路径”是否存在:os.path.isfile(cur_file);os.path.isdir(pt)
    
        获取文件的文件名:os.path.dirname(cur_file)
    
        获取文件的路径名:os.path.basename(cur_file)
    
        修改当前路径到默认路径:os.chdir(pt)
    
        复制文件:将文件复制到指定目录:copy(file, pt)
    
    5.sys模块
    
        系统路径:sys.path
    6.格式化打印列表、集合等模块
          import pprint
          pprint.pprint(sales)
    

    异常

    try:
    
        print(1)
    
    except Exception as e:
    
        print(e)
    
    finally:
    
        # 无论是否出现异常,都会执行
    

    文件操作

    1.写入操作
    
        f =open('contacts.txt', 'w')# write,没有文件会重新建,但不会重建目录
    
        f.close() #不要忘了关掉,不关闭其他程序无法使用该文件
    
        w 表示write,写模式,注意会清空文件内的内容,重新写
    
        a 表示append,追加模式, 它会在文件的末尾添加内容
    
        b表示binary,表示文件是二进制文件,默认是rb,也可以wb,大都是复制,不要编辑
    
    2.安全的写法
    
        with open('data_files/city_sale.png', 'rb')as f:
    
            print(f.read())   比较安全,不需要close,推荐
    
    3.CSV文件操作
        ```普通读取方式可参考Txt,也可导入csv类  
      import csv
        #读取方式1,读所有列
          with open('../test/datafiles/example1.csv', 'r',encoding='utf-8') as f:
            reader = csv.reader(f)
            for row in reader:
                for col in row:
                    print(col, end='\t')
                print()
        #读取方式2,读部分列,常用
        with open('../test/datafiles/example1.csv', 'r',encoding='utf-8') as f:
            reader = csv.DictReader(f)
            for row in reader:
                print(row['产品类目'], row['销售额'])
        sales = (
            ("Peter", (78, 70, 65)),
            ("John", (88, 80, 85)),
            ("Tony", (90, 99, 95)),
            ("Henry", (80, 70, 55)),
            ("Mike", (95, 90, 95)),
        )
        #通过普通方式写CSV全部列     
        with open('../test/datafiles/sales.csv', 'w',newline='') as f:
            writer = csv.writer(f)
            writer.writerow(['name', 'Jan', 'Feb', 'Mar'])
            for name, qa in sales:
                # writer.writerow([name, qa[0], qa[1], qa[2]])
                # 用*号去解压列表
                writer.writerow([name, *qa])
        #通过字典方式写CSV部分列     
        data = [{'name': name, 'amount': sum(qa)} for name, qa in sales]
        import pprint
        pprint.pprint(data)
    
        with open('../test/datafiles/sales2.csv', 'w',newline='') as f:
            fieldnames = ['name', 'amount']
            writer = csv.DictWriter(f, fieldnames)
            writer.writeheader()
            for row in data:
                writer.writerow(row)
    

    pip包管理

    1.安装:pip install faker(或其他的)
    2.卸载:pip uninstall faker(或其他的)
    3.包的安装不区分大小写
    4.批量下载包:pip install -r 路径\文件
    5.升级:pip install -U  faker  若未安装则会去安装
    6.查看包版本:pip show faker
    7.列出当前所有包和版本:pip freeze   
        pip freeze>C:\Users\LKM\Desktop\Textexp.txt  写出文件,就可以在别人那批量下载了
    

    打包exe

    1.安装:pyinstaller
    2.将一个py打包到一个exe:pycharm的terminal里:pyinstaller -p (虚拟环境包管理最深的目录..\Lib\site-packages) -F setup.py
      注意:打包后依赖的很多非py文件要一起,比如txt或者ico
    3.将多个py打包到目录:待定
    4.执行完不退出程序,在最后加:
          import os 
          os.system('pause')
    

    相关文章

      网友评论

          本文标题:python-基础

          本文链接:https://www.haomeiwen.com/subject/lbkeiktx.html