• python-函数和模块


    还要感谢贝勒帮我解决安装模块始终装不上的问题,我在下面写一下解决办法吧:

    pip install pymysql报错如下:

    安装正确如下图:

    解决方法:https://blog.csdn.net/SAJIAHAN/article/details/78309561

    Pip 国内源的使用

     我是用的2里面的b修改好了,步骤如下:

    [global]
    index-url = https://pypi.tuna.tsinghua.edu.cn/simple

      模  块


    #一个python文件就是一个模块

    #1、标准模块
    python自带的模块就是标准模块,也就是可以直接import进来的就是标准模块
    import json
    import random
    import datetime
    import time
    import os
    #2、第三方模块
    别人写好的模块,你安装完之后就能用
    pip源

    # 1、
    pip install pymysql
    #1、pip命令不存在的,把python安装目录下的scrips加入环境变量
    python2 -m pip install xxxx
    python3 -m pip install xxxx
    2、手动安装
    .whl
    1、先从python官网上下载安装文件
    2、pip install c://xxx/xxxx/xxx.whl


    .tar.gz
    1、先从python官网上下载安装文件
    2、解压
    3、在命令行里面进入到解压之后的文件夹中
    4、python setup.py install

    #3、自己写的python文件

     

    常用的模块:

     小知识点:

     1 import os
     2 # print(os.getcwd())#取当前的路径
     3 # os.mkdir('作业')
     4 # os.mkdir('e:\zjr123')#windows系统用\  mac用/
     5 # os.mkdir('c\a')#父目录不存在会报错
     6 # os.makedirs('b\a')#父目录不存在的时候不会报错
     7 
     8 # print(os.listdir('.'))#当前目录下有哪些东西,放路径就是获取某个目录下的所有文件
     9 
    10 # for i in range(10):
    11 #     os.mkdir('e:\zjr123\test%s'%i) #在这个路径下创建从test0到test9的文件夹
    12 
    13 # os.rmdir('stu')#删除空文件夹,非空文件夹不能删除
    14 #
    15 #把末尾是偶数的文件夹中创建一个a.txt文件,里面随便写点东西
    16   # 1. 获取到这个目录下的所有的文件夹,os.listdir('')
    17   # 2. 判断文件夹的最后一位是不是偶数
    18   # 3. 如果是偶数的,在这个文件夹里f = open(a.txt) f.write('xxx')
    19 
    20 # a=os.listdir('e:\zjr123') # os.listdir(r'e:\nhy123') 加r是为了转义,单独
    是换行符
    21 #获取这个文件夹里所有的文件
    22 # print(a)
    23 # for dir in a:#循环这些文件
    24 #     # print(dir[-1])#取字符串的最后一个字符
    25 #     if int(dir[-1])%2 == 0:#判断是否为偶数
    26 #         abs_path = r'e:\zjr123\%sa.txt'%dir #跨目录拼接绝对路径
    27 #         print(abs_path)
    28 #         with open(abs_path,'w',encoding='utf-8') as fw:
    29 #             fw.write('zjirjn')
    30 
    31 # print(os.path.join('zjr123','test0','b.txt'))#拼接路径,它会自动识别路径分割符
    32 # print(os.sep)#当前系统的路径分隔符
    33 # print(os.path.dirname('e:\zjr123\test0\a.txt'))#获取父目录的路径
    34 # print(os.path.getsize('e:\zjr123\test0\a.txt'))#获取文件大小的,可以用来判断空文件
    35 # print(os.path.exists('e:\zjr123\test0'))#判断文件夹是否存在 True or False
    36 # print(os.path.isfile('e:\zjr123\test0\a.txt'))#判断是否是文件,如果文件不存在报False
    37 
    38 # print(os.path.split('e:\zjr123\test0\a.txt'))#分割文件路径和文件名

     遍历文件夹:

    #遍历我电脑本机e盘下zjr123文件夹下有哪些文件和文件夹
    1
    import os 2 for cur_dir,dir,files in os.walk('e:\zjr123'):#cur_dir路径下,dir表示有哪些文件夹,files表示有哪些文件 3 print('cur_dir..',cur_dir,'dirs..',dir,'files..',files)

    结果:

     练习:在logs文件夹里所有的文件后面加.bak

    1 import os
    2 for cur,dirs,files in os.walk('logs'):#平级,写相对位置
    3     # print(cur,dirs,files)
    4     for f in files:#android_2018-04-17.log.bak
    5         new_file_name = os.path.join(cur,f+'.bak')#新名字
    6         # new_file_name = new_file_name.replace('.bak','')
    7         print(new_file_name)
    8         old_file_name = os.path.join(cur,f)#旧名字logsandroidandroid_2018_04_12.log
    9         os.rename(old_file_name,new_file_name)#用新名字替换旧名字

    结果:

    日期相关的

    1 import time
    2 #时间戳 从unix元年开始到现在过的秒数
    3 #格式化好的时间 2018-07-01
    4 
    5 print(int(time.time()))#获取当前的时间戳
    6 print(time.strftime('%Y-%m-%d %H:%M:%S'))#获取当前的时间
    7 print(time.strftime('%y-%m-%d %H:%M:%S'))#获取当前的时间
    1 #取十天前的时间  当前时间戳-10天的总秒数
    2 print(24*60*60*10)
    3 print(1530620629-864000)#再上网找工具转换成格式化的时间
    #时间元组,时间戳和格式化时间互转的中间物

    print(time.gmtime())#把时间戳转成元组,如果不传时间戳,那么取的是标准时区的时间(东八区比标准时区大8)
    print(time.localtime())#把时间戳转成元组,如果不传时间戳,那么取的是当前时区的时间

    结果:

    #通过时间元组求十天前的日期
    print
    (time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(1530620629-864000)))#十天前的日期

     两个很有用的函数,记下来!!!

     1 #1.时间戳转格式化的时间
     2   #1.首先要把时间戳转成时间元组
     3   #2.再把时间元组转成格式化好的时间
     4 
     5 
     6 def timestampToStr(timestamp=None,format='%Y-%m-%d %H:%M:%S'):
     7     if timestamp:#如果传的话
     8         time_tuple = time.localtime(timestamp)  # 把时间戳转成时间元组
     9         return time.strftime(format,time_tuple)
    10     return time.strftime(format)#如果不传就默认当前的时间戳,格式按format来
    11 res = timestampToStr(22341231201,'%Y%m%d')
    12 print(res)
    13 print(timestampToStr())
    14 
    15 #
    16 # #2.格式好的时间,转时间戳
    17 #    1.首先要把格式化好的时间转成时间元组
    18 #    2.再把时间元组转成时间戳
    19 
    20 def strToTimestamp(format_time=None,format='%Y%m%d%H%M%S'):
    21     if format_time:
    22         time_tuple = time.strptime(format_time, format) #把格式好的时间转时间元组
    23         return int(time.mktime(time_tuple)) #时间元组转时间戳
    24     return int(time.time())#如果不传就取当前时间戳
    25 a=strToTimestamp()
    26 print(a)

    python内置的一些函数

    print
    input
    int
    dict
    set
    list
    str
    len
    open
    tuple
    type
    max #取最大值的
    dir #看这个对象里面有哪些方法
    sorted #排序
    print(chr(97))#打印ascii码对应的字符
    print(ord('b'))#打印字符串对应的ascii码

    round(3.123,2)#保留2位小数

    eval #python执行代码
    exec #执行python代码
    enumerate 枚举
    zip

     字符串格式化 %s 和 format

     1 import datetime
     2 #字符串格式化 %s 和 format
     3 msg = '欢迎{name},今天是{today}'
     4 msg = msg.format(name='zjr',today=datetime.datetime.today())
     5 print(msg)
     6 
     7 sql='insert into {} VALUE {}'.format('adb','qq')#大括号可以为空,跟%s差不多
     8 
     9 print(sql)
    10 
    11 #format_map 后面传一个字典
    12 d={'name':'zjr','sex':''}
    13 words = '名字:{name},性别:{sex}'.format_map(d)
    14 print(words)

    关于函数的一些补充:

    常量、局部变量、全局变量

     1 name = 'zjr'#尽量不使用全局变量,会占内存
     2 FILE_NAME='goods.json'#常量,不变动,用大写
     3 
     4 #局部变量
     5     #在函数里定义的变量都是局部变量,出了函数就不能用了
     6 #全局变量
     7     #在文件最上面定义的这个变量,就是全局变量
     8 
     9 def test():
    10     global name#声明我要修改全局变量
    11     name ='小白'
    12     print(name)
    13 test()
    14 
    15 d = {'name':'zjr'}
    16 #字典和list,这种可变变量,不需要用global来声明,就直接可以修改
    17 def my():
    18     d['sex']=28
    19     print(d)
    20 my()
    21 print(d)
     
    23 #可变参数 默认*args,可随便取名
    24 def send_mail(*email):
    25     print('email..',email)
    26     # print('给xxx发邮件%s'%email)
    27 send_mail('zjr@qq.com')
    28 send_mail('1111@qq.com','55555@qq.com')
    29 send_mail()
    30 #1.非必填
    31 #2.没有限制参数个数
    32 
    33 def run(name,age=21,*args):
    34     print('name..',name)
    35     print('age..',age)
    36     print('args..',*args)
    37 run('zjr',45,'bj','lala')
    38 
    39 #返回多个值
    40 def zjr():
    41     name = '小红'
    42     sex = ''
    43     age = 23
    44     return name,sex,age
    45 a,b,c=zjr()
    46 # res = zjr() #return多个值放元组
    47 print(a,b,c)
    48 
    49 def op_db(ip,port,db,passwd,sql):#多个参数,用了位置传参后不能再直接默认传参
    50     pass
    51 
    52 #关键字参数
    53 def m(name,**info):#**info,放到字典中,默认**kwargs
    54     print(info)
    55 # m(name='hhh',sex='boy',age=21)
    56 # m('khh',a='boy',b=1)
    57 # m()
    58 # m(type='car',a=1,b=1)
    59 
    60 #递归,函数自己调用自己,递归最多循环999次 61 #1.用递归的话,必须有一个明确的结束条件 62 63 count = 0 64 def add(): 65 global count 66 count+=1 67 print('hhh',count) 68 add() 69 # add() 70 def my2(): 71 num = input('输入一个数字:') 72 num = int(num) 73 if num%2 != 0: 74 print('请输入偶数!') 75 return my2() 76 # my2() 77 78 # for i in range(1,34):#1到33,顾头不顾尾 79 # print(i) 80 81 import random 82 res = random.sample(range(1,34),6) 83 # print(res) 84 #列表推导式,列表生成式 85 res = [str(i).zfill(2) for i in res] 86 print(res) 87 res2 =[1,2,3,4] 88 res2 = [i+10 for i in res2] 89 print(res2)
  • 相关阅读:
    ROS学习(九)—— rqt_console 和 roslaunch
    ROS学习(八)—— 理解ROS服务和参数
    ROS学习(七)—— 理解ROS Topic
    ROS学习(六)—— 理解ROS节点
    ROS学习(五)—— 编译ROS Package
    ROS学习(四)—— 创建ROS Package
    jupyter notebook + pyspark 环境搭建
    快速搭建大数据分析虚拟机
    系统研究Airbnb开源项目airflow
    pip高级使用技巧以及搭建自己的pypi服务器
  • 原文地址:https://www.cnblogs.com/Mezhou/p/9260362.html
Copyright © 2020-2023  润新知