python内置函数os_python基础学习4-函数、内置函数、os模块、time模块

1       函数

1.1     字符串格式化方法

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

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

#字符串format()方法#第一种importdatetime

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中报的:

ee9144b15fc3d46dbca4cb35bd5cfb2c.png

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

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

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

1.2

全局变量与局部变量

name = '小黑'FILE_NAME = 'goods.json'#变量名如果是大写的表示常量,常量表示变量值一般都不会怎么变化的#局部变量:在函数里面定义的变量都是局部变量,除了函数之外就不能用了

#全局变量:在文件最上面定义的这个变量就是全局变量defhhh():

name = '小白'print(name)

hhh()

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

3ec875327fa3de29678ce019c73b98d9.png

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

ae147eb713a98a447f32670436671180.png

1.3

可变参数

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

在参数前面添加一个*号:defsend_mail(*email):

print('email..',email)

send_mail('zhangsan@163.com')

send_mail('zhangsan@163.com','lxy@qq.com','zyf@126.com')

send_mail()

示例:

defrun(name,*args):

print(name)

print('args:',args)

run('zhangsan','22','beijing','天通苑')

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

函数return多个值时,默认放在一个元组中,也可以用多个变量接收return的值defnhy():

name = 'niuhanyang'sex = '男'age= 18

returnname,sex,age

res = nhy()                    #默认存放在一个元组中

print(res)

a,b,c = nhy()                 #也可以使用多个变量接收return的值

print(a,b,c)

#位置参数(必填参数),默认值参数(不必填),可变参数(不必填,不限制参数个数)#位置参数defop_db(ip,port,db,user,passwd,sql):

print('连接mysql操作数据库')

passop_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------')

defmy(**info):

print(info)

my(name='haha',sex='男',age=18)

my()

my(type='car',a=1,c=1)

print('------必填参数+关键字参数2------')

defmy(name,**info):

print(name)

print(info)

my('xiaohei',a='aaaa',b='bbbbb')        #两个**号关键字参数必须的指定谁等于谁,不指定会报错print('------多种参数1------')

#如果多种类型的参数一起使用,则必须是按位置参数->默认参数->可变参数->关键字参数的顺序填写。defmy(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次。用递归的话,必须得有一个明确的结束条件;用递归能实现的也可以使用循环实现。

defmy2():

num = input('输入一个数字:')

num = int(num)

ifnum%2 !=0:

print('请输入偶数')

returnmy2()

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 = ['张三','李四','王五']

fori inrange(len(stus)):

print(i,stus[i])

#方法二:enumerate枚举方法:forindex,s inenumerate(stus):

print(index,s)

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

fff4731717c5da1a35e4cebe356e4dd5.png

Zip #压缩

stus =  ['张三','李四','王五']

sex = ['男','女','女']

age = [30,20,22,21]

forname,se,ag inzip(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:\Miniconda3\Scripts)的pip添加到环境变量中去;

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

5d9f91a27a4e0bb5f7f89f869300563a.png

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

python2 –m pip install xxx

python3 –m pip install xxx

3.2.2  手动安装

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

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

pip install

D:\pythonbao\redis-2.10.6-py2.py3-none-any.whl

14956f59cc566b2b70c6b23d257734ee.png

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

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

a6da2a5fd0acd15bcc98b2ce6b84ec49.png

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

3f593eafddc48b88541194c8e82bde09.png

3.3

自己写的模块

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

3.4

常用模块

3.4.1  os模块

importos

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')fordir inos.listdir('D:\\pythonscript\\day5'):

ifdir[-1].isdigit():

ifint(dir[-1])%2==0:

abs_path = r'D:\\pythonscript\\day5\\%s\\a.txt'%dir

withopen(abs_path,'w') asfw:

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模块

importtime

#时间戳,从unix元年开始到现在过的秒数#格式化号的时间2018-07-01print(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、再把时间元组转成格式化好的时间deftimestampToStr(timestamp=None,format='%Y%m%d%H%M%S'):

iftimestamp:

time_tuple =

time.localtime(timestamp)  #转成时间元组returntime.strftime(format,time_tuple)

returntime.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))

defstrToTimestamp(format_time=None,format='%Y%m%d%H%M%S'):

ifformat_time:

time_tuple =

time.strptime(format_time,format)

returnint(time.mktime(time_tuple))

returnint(time.time())

t1 = strToTimestamp('20180702020202')

t2 = strToTimestamp()

print(t1,t2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值