zoukankan      html  css  js  c++  java
  • python基础学习4-函数、内置函数、os模块、time模块

     

    1       函数

    1.1     字符串格式化方法

    Python中字符串格式化输出的几种方法:

    https://www.cnblogs.com/hongzejun/p/7670923.html

    字符串格式化另外一种方式format方式

    #字符串format()方法
    #
    第一种
    import datetime
    msg = '欢迎光临{name},今天的日期是{today}'
    msg = msg.format(name = 'zhangsan',today = datetime.datetime.today())
    print(msg)

    #第二种
    sql = 'insert into my_user_value({id},{name},{sex},{addr})'
    tmp = sql.format(id=11,name='lisi',sex='',addr='dfdsd')
    print(tmp)

    #第三种
    sqla= 'insert into {} value {}'.format('aaa','bbb')
    print(sqla)


    #format_map   是对字典字符串格式化
    d = {'name':'小黑','sex':''}
    words = '名字:{name},性别:{sex}'.format_map(d)
    print(words)

    Python2的默认字符集编码是ASCII码,如果出现如下错误都是python2中报的:

     

    可以在python2前面添加一个注释-*- coding:utf-8 -*- 即可解决中文报错问题;

    python3默认是utf-8(utf-8是unicode编码的子集),添加中文不会报错。

    name = '小黑'
    FILE_NAME = 'goods.json'   #变量名如果是大写的表示常量,常量表示变量值一般都不会怎么变化的

    1.2     全局变量与局部变量

    name = '小黑'
    FILE_NAME = 'goods.json'   #变量名如果是大写的表示常量,常量表示变量值一般都不会怎么变化的

    #局部变量:在函数里面定义的变量都是局部变量,除了函数之外就不能用了
    #全局变量:在文件最上面定义的这个变量就是全局变量
    def hhh():
        name = '小白'
       
    print(name)
    hhh()

    global name     #在函数里如果需要修改全局变量的值,则用global声明一下,一般不建议使用全局变量,因为全局变量一直占用内存

     

    字典和list这种可变变量,不需要用golbal来声明,就可以直接修改了

     

    1.3     可变参数

    可变参数(也称为参数组):不是必填的,没有限制参数个数,一般参数比较多的时候可以使用此方法实现;

    在参数前面添加一个*号:
    def send_mail(*email):
        print('email..',email)
    send_mail('zhangsan@163.com')
    send_mail('zhangsan@163.com','lxy@qq.com','zyf@126.com')
    send_mail()

    示例:

    def run(name,*args):
        print(name)
        print('args:',args)
    run('zhangsan','22','beijing','天通苑')

    将zhangsan传给了name,其他的字符串都传给了args

    函数return多个值时,默认放在一个元组中,也可以用多个变量接收return的值
    def nhy():
        name = 'niuhanyang'
       
    sex = ''
       
    age= 18
        return name,sex,age
    res = nhy()                    #默认存放在一个元组中
    print(res)
    a,b,c = nhy()                 #也可以使用多个变量接收return的值
    print(a,b,c)

    #位置参数(必填参数),默认值参数(不必填),可变参数(不必填,不限制参数个数)
    #
    位置参数
    def op_db(ip,port,db,user,passwd,sql):
        print('连接mysql操作数据库')
        pass
    op_db('192.168.1.1',3306,'aaa','root','123456','select')
    op_db('192.168.1.1','3306',user='root',passwd='123456',db='jzx',sql='insert')

    #关键字参数:在参数前面添加两个**号,不必填,不限制参数个数,传的参数放在了字典里面
    print('------关键字参数1------')
    def my(**info):
        print(info)
    my(name='haha',sex='',age=18)
    my()
    my(type='car',a=1,c=1)

    print('------必填参数+关键字参数2------')
    def my(name,**info):
        print(name)
        print(info)
    my('xiaohei',a='aaaa',b='bbbbb')        #两个**号关键字参数必须的指定谁等于谁,不指定会报错


    print('------多种参数1------')
    #如果多种类型的参数一起使用,则必须是按位置参数->默认参数->可变参数->关键字参数的顺序填写。
    def my(name,sex='',*args,**kwargs):
        print(name)
        print(sex)
        print(args)
        print(kwargs)
    my('xiaohei')
    my('xiaohei','hhh','args','args2',k='1',k2='2')

    1.4     递归

    递归,即函数自己调用自己,递归最多循环999次。用递归的话,必须得有一个明确的结束条件;用递归能实现的也可以使用循环实现。

    def my2():
        num = input('输入一个数字:')
        num = int(num)
        if num%2 !=0:
            print('请输入偶数')
            return my2()
    my2()

     

    import random
    res = random.sample(range(1,34),6)
    print(res)
    #方法一
    for i in range(len(res)):
    res[i] = str(res[i]).zfill(2)
    print(res)

    #方法二:列表推导式,列表生成式
    res = [str(i).zfill(2) for i in res]
    print(res)

    #100里面的偶数
    hh = [i for i in range(0,100,2)]
    print(hh)

    2       内置函数

    Python内置函数:

    Print

    input

    int

    dict

    set

    list

    str

    len

    open

    tuple

    type

    max #取最大值

    dir #看这个对象里面有哪些方法

    msg ='hello'
    print(dir(msg))

    sorted #排序

    print(chr(97)) #打印数字对应的ascii

    print(ord(‘b’)) #打印字符串对应的ascii

    round() #保留几位小数

    eval #python执行代码

    exec #执行python代码

    enumerate #枚举方法

    #同时获取下标以及元素的方法:
    #
    方法一
    stus = ['张三','李四','王五']
    for i in range(len(stus)):
        print(i,stus[i])
    #方法二:enumerate枚举方法:
    for index,s in enumerate(stus):
        print(index,s)

    指定下表从指定的数值开始,不指定默认从0开始:

     

    Zip #压缩

    stus =  ['张三','李四','王五']
    sex = ['','','']
    age = [30,20,22,21]
    for name,se,ag in zip(stus,sex,age):    #zip将多个list压缩到一起
       
    print(name,se,ag)

    如果list元素不一样多,则循环最少的。

    Map          #循环帮你调用函数

    Filter

    3       模块

    一个python文件就是一个模块

    3.1     标准模块

    标准模块:python自带的模块就是标准模块,也就是可以直接import进来的标准模块,如:

    import json

    import random

    import datetime

    import time

    import os

    3.2     第三方模块

    第三方模块:别人写好的模块,你安装完之后就能用

    3.2.1  pip安装

    第三方模块需要自己安装,使用pip源方法进行安装

    pip install +第三方模块名

    pip install pymysql

    如果pip命令不存在的,则直接到python中安装目录(D:Miniconda3Scripts)的pip添加到环境变量中去;

    如果pip命令有,但是还是不能安装,则用where pip查看下面是否是有多个pip导致的,将非python下的pip重命名即可解决;

     

    如果装了多个版本的python,则下载第三方库的方法为:

    python2 –m pip install xxx

    python3 –m pip install xxx

    3.2.2  手动安装

    先从python官方网站(https://pypi.org)上搜索需要安装的模块:

    .whl后缀结尾的文件安装方法(使用绝对路径方法进行安装):

    pip install D:pythonbao edis-2.10.6-py2.py3-none-any.whl

     

    .tar.gz压缩包的文件安装方法:

    先解压文件,进入到解压的文件目录下,在地址栏上输入cmd进入到该路径下(或者在该解压文件夹下按住shift键,右键选择“在此处打开命令行窗口”),在打开的窗口下执行python setup.py install。

     

    Pycharm安装第三方模块的方法(这个不是太好用):

     

    3.3     自己写的模块

    自己写的:自己写的python文件

    3.4     常用模块

    3.4.1  os模块

    import os
    print(os.getcwd())  #取当前的路径
    os.mkdir('spz'#在当前目录下创建一个文件夹
    os.mkdir('d:\aaa'#在绝对路径下创建文件夹
    os.makedirs('spz2'#在当前目录下创建一个文件夹,
    os.makedirs('stu\laowang'#父目录不存在时,会自动帮忙创建父目录,而mkdir不会;

    print(os.listdir('D:\pythonscript\day5'))  #获取某个路径下的所有文件

    # for i in range(10):
    #     os.mkdir('D:\pythonscript\day5\test%s'%i)
    #
    把末尾是偶数的文件夹中,创建一个a.txt文件,里面随便写点东西
    #
    思路如下:
    #1
    、获取到这个目录下所有的文件夹,os.listdir('')
    #2
    、判断文件夹的名字最后一位是不是偶数
    #3
    、如果是偶数的,在这个文件里面f = open(a.txt) f.write('xxxx')

    for dir in os.listdir('D:\pythonscript\day5'):
        if dir[-1].isdigit():
            if int(dir[-1])%2==0:
                abs_path = r'D:\pythonscript\day5\%s\a.txt'%dir
                with open(abs_path,'w') as fw:
                    fw.write('test')

    #拼接路径,会自动识别路径分隔符
    print(os.path.join('day5','test0','a.txt'))
    print(os.sep)   #显示当前系统文件路径分隔符

    print(os.path.dirname('D:\pythonsript\day5\test0\a.txt'))  #获取父目录的路径

    os.path.getsize()   #获取文件大小的

    3.4.2  time模块

    import time
    #时间戳,从unix元年开始到现在过的秒数
    #
    格式化号的时间2018-07-01

    print(time.time())  #获取当前时间戳

    print(time.strftime('%Y-%m-%d %H:%M:%S'))  #获取格式化好的时间
    print(time.strftime('%y%m%d'))  #%Y%y有点区别

    #
    时间戳和格式化时间转换
    #
    时间元组

    print(time.gmtime())    #把时间戳转成时间元组,如果不传时间戳,那么取的是标准时区的时间
    print(time.localtime()) #取当地时区的时间元组
    print(time.localtime(1530436244-864000))

    print(time.asctime(time.localtime(1530436244-864000)))
    print(time.strftime('%Y%m%d%H%M%S',time.localtime(1530436244-864000)))

    #时间戳转格式化好的时间
    #1
    、先把时间戳转成时间元组
    #2
    、再把时间元组转成格式化好的时间
    def timestampToStr(timestamp=None,format='%Y%m%d%H%M%S'):
        if timestamp:
            time_tuple = time.localtime(timestamp)  #转成时间元组
           
    return time.strftime(format,time_tuple)
        return time.strftime(format)
    res = timestampToStr(1530436244,'%Y%m%d')
    res2 = timestampToStr()
    print(res,res2)

     

    #格式化好的时间转时间戳
    #1
    、先把格式化好的时间转成时间元组
    #2
    、再把时间元组转化成时间戳

    time1 = time.strptime('20180701','%Y%m%d')
    print(time.mktime(time1))

    def strToTimestamp(format_time=None,format='%Y%m%d%H%M%S'):
        if format_time:
            time_tuple = time.strptime(format_time,format)
            return int(time.mktime(time_tuple))
        return int(time.time())
    t1 = strToTimestamp('20180702020202')
    t2 = strToTimestamp()
    print(t1,t2)

  • 相关阅读:
    Scrapy(爬虫)基本运行机制
    Python面向对象中的“私有化”
    基于Requests和BeautifulSoup实现“自动登录”
    BeautifulSoup模块
    Python爬虫之-Requests
    踩坑之jinja2注释问题(Flask中)
    Struts2 从一个Action跳至另一个Action
    @JSON(serialize=false),过滤不需要的变量
    JS function的参数问题
    nginx反向代理配置及优化
  • 原文地址:https://www.cnblogs.com/better0903/p/9275879.html
Copyright © 2011-2022 走看看