函数模块
Posted kuhaha
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数模块相关的知识,希望对你有一定的参考价值。
一.函数
1.变量
#变量名全部为大写时,就是一个常量
FILE_NAME=‘gdgd‘ #常量的值是不会变的
name=‘小黑‘ #全局变量
# 局部变量
# 在函数里边定义的变量都是局部变量,出了函数之后就不能用了
# 全局变量
# 在文件最上边定义的这个变量,就是全局变量
def hh():
global name #此处为局部变量。用global声明一下,可以将全局变量修改,一般不用,影响内存;字典和list这种可变的变量,不需要global来声明,就可以直接改了
name=‘小白‘
print(name)
hh() #结果是小白
print(name) #结果是小白
******************************************************************************
2.函数传参
# 可变参数(参数组) 参数非必填,参数个数没有限制,最后的结果存放在元组当中
def send_mail(*email):
print(email)
send_mail(‘fsfsfs‘)
send_mail(‘fdfdfd‘,‘dsdssds‘,‘rrerer‘)
send_mail()
def run(name,age=28,*args):
print(name)
print(age)
print(‘args..‘,args)
run(‘aa‘,25,‘北京‘,‘fafsa‘)
结果:
aa
25
args..北京 fafsa
def st():
name=‘abc‘
sex=‘男‘
age=18
return name,age,sex #return多个值时,将所有返回值放到一个数组中
res=st()
print(res) (‘abc’,‘男’,18)
# 关键字参数
def my(**info): #非必填,没有限制参数个数,将结果放到一个字典里边
print(info)
my(name=‘fadada‘,sex=‘男‘,age=18)
my()
my(type=‘car‘,a=1,c=1)
#位置参数(必填参数),默认值参数(不必填),可变参数(不必填的,不限制参数个数)
def op_db(ip,port,db,user,passwd,sql):
print(‘连接mysql操作数据库‘)
pass
op_db(‘192.1681.12‘,‘xxx‘,3306,‘sdf‘,‘sdf‘,‘sdf‘)
op_db(‘192.169.1.12‘,3306,user=‘root‘,passwd=‘12345‘,db=‘jxz‘,sql=‘select‘)
3.递归:就是函数自己调用自己,类似于循环,但是递归有次数限制,最大递归次数为999次,超过了这个限制就会报错,所有用递归的话,必须要有一个明确的结束条件
4.列表推导式,列表生成式
res=[12,45,88,2,3,6]
res=[str(i).zfill(2) for i in res] 对res列表进行遍历,同时对遍历的结果进行处理
5.内置函数:
print(all([1,2,3,4]))#判断可迭代的对象里面的值是否都为真
print(any([0,1,2,3,4]))#判断可迭代的对象里面的值是否有一个为真
print(bin(10))#十进制转二进制
print(bool(‘s‘))#把一个对象转换成布尔类型
print(bytearray(‘abcde‘,encoding=‘utf-8‘))#把字符串变成一个可修改的bytes
print(callable(‘aa‘))#判断传入的对象是否可调用
print(chr(10))#打印数字对应的ascii
print(ord(‘b‘))#打印字符串对应的ascii码
print(dict(a=1,b=2))#转换字典
print(dir(1))#打印传入对象的可调用方法
print(eval(‘[]‘))#执行python代码,只能执行简单的,定义数据类型和运算
print(exec(‘def a():pass‘))#执行python代码
print(filter(lambda x:x>5,[12,3,12,2,1,2,35]))#把后面的迭代对象根据前面的方法筛选
print(map(lambda x:x>5,[1,2,3,4,5,6]))
print(frozenset({1,2,3,3}))#定义一个不可修改的集合
print(globals())#返回程序内所有的变量,返回的是一个字典
print(locals())#返回局部变量
print(hash(‘aaa‘))#把一个字符串哈希成一个数字
print(hex(111))#数字转成16进制
print(max(111,12))#取最大值
print(oct(111))#把数字转换成8进制
print(round(11.11,2))#取几位小数
print(sorted([2,31,34,6,1,23,4]))#排序
dic={1:2,3:4,5:6,7:8}
print(sorted(dic.items()))#按照字典的key排序
print(sorted(dic.items(),key=lambda x:x[1]))#按照字典的value排序
__import__(‘decorator‘)#导入一个模块
rang(1,1000,2) 从1到1000,步长为2
stus=[‘放到‘,‘方式‘,‘如风达‘,‘发顺丰‘]
stus=[‘发顺丰‘,‘苟富贵‘,‘第三方‘,‘苟富贵‘]
for index,s in enumerate(stus):
print(index,s) #同时循环取列表中的内容和下标,同时枚举函数不仅仅适用于list,字符串,数字,汉字都可以
sex=[‘男‘,‘男‘,‘女‘,‘女‘]
age=[1,2,3,6]
for name,se,ag in zip(stus,sex,age): #zip函数将多个list压缩到一起,list个数不限,当list长度不一时,以短的为准
print(name,se,ag)
二、模块
1.模块的概念
一个python文件就是一个模块
(1).标准模块
python自带的模块就是标准模块,也就是可以直接import进来的就是标准模块
(2).第三方模块
别人写好的模块,安装完成后就能用
安装方式:
pip源安装
pip install pymysql
pip命令不存在的,把python安装目录下的scrips加入环境变量
python2 -m pip install xxxx
python3 -m pip install xxxx
手动安装
.whl
1、先从python官网上下载安装文件
2、pip install c://xxx/xxxx/xxx.whl
.tar.gz
1、先从python官网上下载安装文件
2、解压
3、在命令行里面进入到解压之后的文件夹中
4、python setup.py install
(3).自己写的python文件
2.常用模块
os模块
import os
print(os.getcwd())#取当前工作目录
os.chmod("/usr/local",7)#给文件/目录加权限
print(os.chdir("../"))#更改当前目录
print(os.curdir)#当前目录
print(os.pardir)#父目录
print(os.makedirs("/usr/hehe/hehe1"))#递归创建文件夹,父目录不存在时创建父目录
print(os.removedirs("/usr/hehe/hehe1"))#递归删除空目录
print(os.mkdir("test1"))#创建文件夹,父目录不存在时,会报错
print(os.rmdir("test1"))#删除指定的文件夹
print(os.remove("test"))#删除文件
print(os.listdir(‘.‘))#列出一个目录下的所有文件
os.rename("test","test1")#重命名
print(os.stat("len_os.py"))#获取文件信息
print(os.sep)#当前操作系统的路径分隔符
print(os.linesep)#当前操作系统的换行符
print(os.pathsep)#当前系统的环境变量中每个路径的分隔符,linux是:,windows是;
print(os.environ)#当前系统的环境变量
print(os.name)#当前系统名称
print(os.path.abspath(__file__))#获取绝对路径
print(os.path.split("/usr/hehe/hehe.txt"))#分割路径和文件名
print(os.path.dirname("/usr/local"))#获取父目录
print(os.path.basename("/usr/local"))#获取最后一级,如果是文件显示文件名,如果是目录显示目录名
print(os.path.exists("/usr/local"))#目录/文件是否存在
print(os.path.isabs("."))#判断是否是绝对路径
print(os.path.isfile("/usr/local"))#判断是否是一个文件
print(os.path.isdir("/usr/local"))#是否是一个路径
print(os.path.join("/root",‘hehe‘,‘a.sql‘))#拼接成一个路径,自动识别系统,写出正确的路径分隔符
print(os.path.getatime("len_os.py"))#输出最近访问时间
print(os.path.getmtime("len_os.py"))#输出最近访问时间
os.path.getsize(‘E:\jch\tett0\a.txt‘) #获取文件大小的
random模块
import random,string
print(random.random())#随机浮点数,默认取0-1,不能指定范围
print(random.randint(1,20))#随机整数
print(random.randrange(1,20))#随机产生一个range
print(random.choice(‘x23serw4‘))#随机取一个元素
print(random.sample(‘hello‘,2))#从序列中随机取几个元素
print(random.uniform(1,9))#随机取浮点数,可以指定范围
x = [1,2,3,4,6,7]
random.shuffle(x)#洗牌,打乱顺序,会改变原list的值
print(x)
print(string.ascii_letters+string.digits)#所有的数字和字母
time模块
import datetime,time
print(time.timezone)#和标准时间相差的时间,单位是s
print(time.time())#获取当前时间戳
print(time.sleep(1))#休息几s
print(time.gmtime())#把时间戳转换成时间元组,如果不传的话,默认取标准时区的时间戳
print(time.localtime())#把时间戳转换成时间元组,如果不传的话,默认取当前时区的时间戳
print(time.mktime(time.localtime()))#把时间元组转换成时间戳
print(time.strftime("%y%m%d %H%M%S"))#将时间元组转换成格式化输出的字符串
print(time.strptime("20160204 191919","%Y%m%d %H%M%S"))#将格式化的时间转换成时间元组
print(time.struct_time)#时间元组
print(time.asctime())#时间元转换成格式化时间
print(time.ctime())#时间戳转换成格式化时间
print(datetime.datetime.now())#当然时间格式化输出
print(datetime.datetime.now()+datetime.timedelta(3))#3天后的时间
print(datetime.datetime.now()+datetime.timedelta(-3))#3天前的时间
时间戳:从liunx元年到现在过的秒数
格式化的时间如:2018-01-07
时间元组:time.struct_time(tm_year=2018, tm_mon=7, tm_mday=4, tm_hour=14, tm_min=23, tm_sec=53, tm_wday=2, tm_yday=185, tm_isdst=0) 时间戳和格式化的时间不能直接互转,必须通过时间元组为中介来互转
时间戳和格式化好的时间互转,方法固定,以后可以直接拿来用
# 1.时间戳转格式话好的时间
# 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(2234123120,‘%Y%m%d‘)
print(timestampToStr())
# 2.格式化好的时间,转时间戳
# 1.先把格式化好的时间,转化成时间元组
# 2.再把时间元组转化成时间戳
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())
以上是关于函数模块的主要内容,如果未能解决你的问题,请参考以下文章
如何使用模块化代码片段中的LeakCanary检测内存泄漏?
CTS测试CtsWindowManagerDeviceTestCases模块的testShowWhenLockedImeActivityAndShowSoftInput测试fail项解决方法(代码片段