学习总结——python的基础4(函数、模块)

函数


name = '小黑'
FILE_NAME ='goods.json' # 常量

# 局部变量
# 在函数里面定义的变量都是局部变量,除了函数之后就不能用了
#全局变量
# 在文件最上面定义的这个变量,就是全局变量
def test():
# global name # 想在函数中对全局变量进行修改,就用global声明一下
name = '小白'
print(name)
# test()
# print(name)

################################################################################

d = {'name':'abc'} # 字典和list,这种可变变量,不需要用global来声明,就可以直接改了
def my():
d['sex']=29
print()

# my()
# print(d)

################################################################################

# 可变参数,参数组
def send_mail(*args):
print(args)
print('email..',args)
# print('给xxx发邮件了%s'%email)

# send_mail('[email protected]')
# send_mail('[email protected]','[email protected]','[email protected]')
# send_mail()

def run(name,age,*args):
print(name)
print(age)
print('args..',args)
# run('Lcs',28,'beijing','天通苑')

# 1、是否必填
# 2、有没有限制参数个数

################################################################################

def abc():
name = '小黑'
sex = '男'
age = 18
return name,sex,age

# print(abc()) # return多个值,会把值放在一个元组里
# a,b,c = abc()
# print(a,b,c)

################################################################################

def op_db(ip,port,db,user,passwd,sql):
print('链接mysql操作数据库')
pass

# 三种传参方式:
# op_db('192.168.1.1','xxx','3306','sdf','sdf','sdf') # 按照位置
# op_db(db='jxz',ip='192.168.1.1',passwd='123456',user='abc',port='3306',sql='select * from users') # 按照关键字
# op_db('192.168.1.1','3306',db='jxz',passwd='123456',user='abc',sql='select * from users') # 位置方式必须在关键字方式前面

################################################################################

# 位置参数(必填参数),默认值参数(不必填),可变参数(不必填的,不限制参数个数)
# 关键字参数
#--------------------------------------#

def my(name,sex='男',*args,**kwargs):
print(name)
print(sex)
print(args)
print(kwargs)

my(name = '小黑',sex = '男',age = 18)
# my()
# my(type = 'car',a = 1, c =1)
#--------------------------------------#

# 1、是否必填 # 非必填
# 2、有没有限制参数个数 # 不限制
# 3、**把传过来的参数放到了什么里面 # 字典
#--------------------------------------#

# def my(name,**kwargs):
# print(name)
# print(kwargs)

# my('小黑',a='aaa',b='bbb')

#--------------------------------------#

# def my(name,sex='男',*args,**kwargs):
# print(name)
# print(sex)
# print(args)
# print(kwargs)
#
# my('小黑','男','args1','args2',k1='v1',k2='v2')

#--------------------------------------#

#★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

# 递归,函数自己调用自己
count = 0
def add():
global count
count+=1
print('hhh',count)
add()
# add()
# 递归的话,最多循环999次

################################################################################

def my2():
num = input('输入一个数字:')
num = int(num)
if num%2 !=0:
print('请输入偶数')
return my2()
# my2()
# 1、用递归的话,必须得有一个明确的结束条件

################################################################################
# 把[20, 19, 10, 6, 15, 17] 改成:
#['20', '19', '10', '06', '15', '17']

# 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 = [20, 19, 10, 6, 15, 17]
print('res:%s'%res)
res1 = [str(i).zfill(2) for i in res]
print('res1:%s'%res1)
res2 = [ i+10 for i in res]
print('res2:%s'%res2)

# 1000 以内的所有偶数
hh = [ i for i in range(2,1000,2)]
print('1000以内的偶数:%s'%hh)

内置函数

 
# 查看内置方法有哪些
# msg = 'hello'
# print(dir(msg))

# import json
# print(dir(json))

################################################################################

# 字符串/list排序
print(sorted('4564231315')) # 升序
print(sorted([2,5,6,1,2,3,5],reverse=True)) # 降序

################################################################################

print(round(6.6666666,2)) # 保留两位小数

################################################################################
# eval() # 执行python代码,只能执行简单的python代码。1+1 a=1
res = eval('3*5')
print(res)

# f = open('goods')
# goods = f.read()
# res = eval(goods)
# print(type(res))

# exec() #

f = open('code',encoding='utf-8')
code = f.read()
exec(code) # 执行python代码的
my()

################################################################################
stus = ['小黑','小白','小黄','小红']

for i in range(len(stus)):
print(i,stus[i])

# enumerate --- 枚举,只要可以循环的都可以用(list、字符串、字典....)
for index,s in enumerate(stus):
print(index,s)

msgs = ['登录','注册','退出']
for index,msg in enumerate(msgs,1): # enumerate(XXX,1) 这里1表示从1开始
print(index,msg)
print('请输入你的选择:')

################################################################################
name = ['小黑','小白','小黄','小红']
sex = ['男','女','女','男']
age = [15,17,16,18]

for name,sex,age in zip(name,sex,age): # 把多个list压缩到一起
print(name,sex,age)
# 如果list中元素个数不一致,循环执行次数按照元素个数最少的那个

常用模块

import os
print(os.getcwd())  # 取当前的路径
os.mkdir('spz') # 创建文件夹
os.mkdir('f:\\wj')
os.makedirs('spz2') # 创建文件夹
os.makedirs('stu\\wj') # 父目录不存在时,会帮你创建父目录

print(os.listdir('f:\\')) # 查看目录下有哪些文件

for i in range(10):
os.mkdir('f:\\wj\\test%s'%i)

os.rmdir('spz') # 删除空文件夹
print(os.remove("test"))#删除文件

####################################### 练习题 #########################################

# 把末尾是偶数的文件夹中,创建一个a.txt文件,里面随便写点东西
# 1、获取到这个目录下所有的文件夹。os.listdir('')
# 2、判断文件夹的名字最后一位是不是偶数
# 3、如果是偶数,在这个文件里 f = open(a.txt) f.write('xxx')

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

################################################################################

print(os.path.join('wj','test0','a.txt')) # 拼接路径,它会自动识别路径分隔符
print(os.sep) # 当前系统的路径分隔符
print(os.path.dirname(r'f:\\wj\\test0\\a.txt')) # 获取父目录的路径
print(os.path.getsize(r'f:\\wj\\test0\\a.txt')) # 获取文件大小
print(os.path.exists(r'f:\\wj\\test0\\a.txt')) # 判断文件、文件夹是否存在
print(os.path.isdir(r'e:\\wj\\test0\\a.txt')) # 判断是否是文件夹,如果不存在,会返回False
print(os.path.isfile(r'e:\\wj\\test0\\a.txt')) # 判断是否是文件,如果不存在,会返回False
print(os.path.split(r'f:\\wj\\test0\\android_2018-06-23.log')) # 分割文件名和路径
时间相关的模块


import time

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

print(int(time.time())) # 获取当前时间戳
print(time.strftime('%Y-%m-%d %H:%M:%S'))
print(24*60*60*3) # 3天的总秒数
print(time.gmtime()) # 把时间戳转成时间元组,如果不转时间戳,那么取的是标准时区的时间
print(time.localtime()) # 把时间戳转成时间元组,如果不转时间戳,那么取的是当前时区的时间
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(1530436293 - 259200))) # 1530436293 - 259200 三天前的时间戳

################################################################################

# 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(2210065421)
# res = timestampToStr(22456465421,'%Y%m%d')
print(res)
################################################################################

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

def strToTimestamp(format_time,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())

res = strToTimestamp('2019-02-21 18:06:45')
print(res)


猜你喜欢

转载自www.cnblogs.com/Printwj/p/9262794.html