---恢复内容开始---

一、函数相关:

1.1位置参数:

ef hello(name,sex,county='china'):
pass
#hello('hh','nv') #位置参数、默认参数

1.2可变参数:也叫参数组,在参数名前加*,一般习惯命名为*args

*args 特性:

(1)不必传

(2)不限制参数个数,可传一个或多个

(3)传多个参数的时候,args把传的值放在一个元组中

def send_email(*args):
print("发邮件")
print(args) #结果为一个元组 调用:
send_email('h')
send_email()
send_email('h','daibai','test')

1.3**kwargs:两个**,关键字参数:

(1).不限制参数个数,传多个参数时,把参数放在一个字典里

(2).传参必须使用关键字调用,key=value格式

(3).不是必传

def send_email(**kwargs):

  print(“发邮件”)

  print(kwargs)

send_email(name='xiaohei',age='17')

1.4 注意事项:

#参数调用例子及错误示范
def myfunc(name,addr,phone,qq):
print(name,addr,phone,qq)
myfunc(phone=110,addr='bks',qq='',name='hh') #正确。关键字调用,可以不用按位置调用
myfunc('hh',phone=110,addr='bks',qq='') #正确。位置参数可以与关键字调用共同用,但注意使用方法
#myfunc('hh',phone=110,addr='bks','9459666') #错误示范。关键字参数后边,不能再用位置参数,用了关键字传值后,后边的值都要用关键字参数
def myfunc1(name,addr='bks',*args):
print(name,addr,args)
myfunc1('xiaohei')
myfunc1('xiaohei','xiaobai') #按位置传,xiaobai传给addr
myfunc1('xiaohei','xiaobai','tiantongyuan','huilongguan') #按位置传,xiaobai传给addr,xiaohei给name,其他值都传给args
#myfunc(name='xiaohei',addr='xiaobai','abc') #报错:如果用前边用关键字传值,args在最后就无法传值了。
def myfunc2(name,addr='bks',**kwargs):
print(name,addr,kwargs)
myfunc2(name='xiaohei',addr='xiaobai',kwargs='abc') #前边传关键字,多元参数就用kwargs
def myfunc3(name,addr='bks',*args,**kwargs):
print(name,addr,kwargs)
myfunc2(name='xiaohei',addr='xiaobai',age='',sex='nv') #调用的时候 age和sex都给了kwargs,因为args不能传关键字,且可以为空

2、函数传参:

2.1 解包:

def connect(ip,port,username,password):
print(ip)
print(port)
print(password)
print(username) info=('192.167.1.102','','name','')
list=['192.16.108.227','','hehe','']
se={1,2,3,4} #可以解包,但是是无序的
s=''
dic = {'ip':'127.0.0.1','port':3307,'username':'root','password':''}
#以上几种,均可以解包
connect(*info) #解包:把元组解成:'192.16.108.227','3306','hehe','123456'
connect(*list) #解包:把list解成:'192.16.108.227','3306','hehe','123456'
connect(**dic) #解包:'ip'='127.0.0.1','port'=3307,'username'='root','password'='1233', 字典解包 ,要用关键字传值,所以是两个**
#两**:关键字传值

3.递归:

#递归:函数自己调用自己
#递归最多递归999次,所以如果死循环,函数会报错
#用递归,一定要指定一个结束的条件,不能进入死循环 count=0
def hello():
global count
count+=1
print('hello')
print(count)
hello()
hello() #结果会报错,因为是个死循环
def test():
num=input("输入一个数字")
if num%2==0:#判断输入的数字是不是偶数
return True#如果是偶数的话,程序就退出了,返回true
print("不是偶数")
return test()#如果不是偶数的话继续调用自己,输入值
print(test1())#调用test

4.内置函数:

4.1 dir()#可以打印这个模块或变量下可以调用的方法

#coding=utf-8
#python3 默认字符集是utf-8 import random
#dir()#可以打印这个模块或变量下可以调用的方法
print(dir(random)) #可以打印这个模块或变量下可以调用的方法
print(dir(s))

4.2 排序:sorted():被排内容的必须是同一种数据类型

s=sorted(s)    #字符串排序后会成为list
se=sorted(se) #排序,被排的必须是同一种数据类型
print(s)

4.3判断:

#all():判断,可判断迭代的对象里面的值是否都是真
#非零即真,非空即真
print(all([1,2,3,4,5,0])
#any():判断可迭代的对象里面的值是否有一个为真
print(any([1,2,3,4,5,0]))
#bool('s') #把一个对象转为布尔类型,可判断非空 非零情况\
print(bool('s'))
#十进制转二进制:
print(bin(10)) #10进制转2进制
#打印数字对应的ascii码
print(chr(32)) #打印数字对应的ascii

5.执行python代码:exec()、eval()

s='print("hello,world")'
s2='print(dir(random)) '
s3='''
print("hello")
'''
exec(s)
exec(s2) #执行python代码
exec(s3)
res=eval('1+1') #只能执行简单的python代码
print(res)
res2=eval("{'1','2','3','4'}")
print(res2)

6.匿名函数:lambda

import random,string,os
niming=lambda x:x+1 #冒号前是要传的参数,冒号后是返回值
#同下:
def niming2(x):
return x+1
print(niming(1))
print(niming2(1))

7.循环调用函数:map()、filter()

7.1  map():循环取值并调用

def choice(a):
return(a+1)
#同上
result=list(map(choice,[1,2,3,4,5,6])) #如果不转成list, map的结果是一个对象,必须转成list才能被执行
print(result)
#函数名也是变量名,可以直接调用
stus=['han','xiaoming','caicai','xiaohei']
for stu in stus:
os.mkdir(stu)
同上
result=list(map(os.mkdir,stus)) #迭代器:必须转成list才能被执行
print(result) #mkdir函数没有返回值,所有返回的list 都是None
map():
1.map是循环调用函数的
2.map会把函数每次调用的返回值保存,最后返回。如果调用的函数没有返回值,就返回none
def add_prx(name):
return 'cnz_%s'%name
res=list(map(add_prx,stus))
print(res)

7.2 :filter:()

#1.循环的调用函数
#2.帮你过滤传入的参数,函数的返回结果是True那就保存,返回false就不要了
stus=['','','','']
def add_prx(name):
return name
res=list(map(add_prx,stus))
print(res) #结果:['1', '2', '3', ''],没有过滤空的
res2=list(filter(add_prx,stus))
print(res2) #['1', '2', '3'] 过滤了空的(False)
score=['','','','','']
result=list(filter(lambda score:score>60,score)) #如果score<60,返回false,就不返回了)
print(result)
#代码同下:
score_list=[90,40,59,80,79]
def panduan(score):
return score>60
result=list(filter(panduan,score_list))

二、全局变量、局部变量

全局变量:
大家都可以用的变量
全局变量定义在最上边

不可变的数据类型,如int,string,stuple,需要修改全局变量必须加global
可变的数据类型,如字典、list、set,不需要加global
局部变量
函数里面定义的都是局部变量
调用函数结束后,局部变量就释放了

language='python'  #全局:int、string、tuple这三种数据类型,如果要修改全局变量的话,需要用global
list=[1,2,3,4] #list、dict、set这种可以修改的变量类型,不需要加gloable也可以修改全局变量 def hello():
global language #声明,更改全局变量,更改后全局变量改为本函数中定义的局部变量。
language='java'
list.append('hello') #可以直接修改,不需要声明
print('language') def xiaobai():
print(list) #结果是list=[1,2,3,4,'hello']
print(language) #结果是Java
hello()
xiaobai()

练习:

#练习1
money=500
def test(consume):
return money-consume def test1(money):
return test(money)+money
money=test1(money)
print(money) 运行结果是500
#练习2:
def test():
global a
a = 5
def test1():
c = a + 5
return c
res = test1()
print(res)
#运行结果会报错, 由于没有定义a,调用是也没有先调用test(),所以在执行test1()时,a是没有定义的

三、time模块

3.1取格式化好的时间

#表示时间:
#时间戳:从计算机诞生的时间到现在过了多少秒
#格式化好的时间:2019-6-16 #获取格式化好的时间:
print(time.strftime('%y-%m-%d %H:%M:%S')) #获取当前时间,连接符自己定义
print(time.strftime('%Y.%m.%d %H:%M:%S'))
print(time.strftime('%H:%M:%S')) #只获取时间,不获取日期

3.2、取时间戳:print(time.time())

转换为时间戳后,方便进行计算。

比如说,取三天后的时间: print(1560674721+60*60*24)

3.3 、时间戳转化为格式化的时间:先把时间戳转化为时间元组,再把时间元组转化为格式化时间

time_tuple=time.gmtime(1560674916)      #通过时间戳获取标准时区的时间元组

time_tuple=time.localtime(1560674916)     #通过时间戳获取当地时区的时间元组

#时间元组转为格式化时间:time.strftime

print(time.strftime('%Y.%m.%d %H:%M:%S',time_tuple))

3.4、格式化时间转为时间戳:先转为时间元组,再转为时间戳

#转时间元组:time.strptime()

time_tuple=time.strptime('19-06-16 16:00:00','%y-%m-%d %H:%M:%S')#前后的格式必须对应
print(time_tuple)

#时间元组转时间戳:time.mktime(time_tuple)

3.5、格式化时间和时间戳互相转化的函数

def str_to_timestamp(str=None,format='%Y-%m-%d %H:%M:%S'):
#格式化时间转时间戳,如果不传格式化好的时间,就返回当前的时间戳
if str:
time_tuple = time.strptime(str,format)
return int(time.mktime(time_tuple))
return time.time()
str_to_timestamp()
def timestamp_to_str(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)
timestamp_to_str()

四、OS模块   与操作系统相关的模块

print(os.listdir(r'E:\cnz\6_16'))#列出某个目录下边文件夹的文件
print(os.path.isfile(r'E:\cnz\6_16')) #判断是不是文件
print(os.path.isdir(r'E:\cnz\6_16' )) #判断是不是文件夹 os.mkdir('test') #当前路径下创建文件夹,
os.makedir('test2')
#以上两种方式的区别
# os.mkdir(r'E:\cnz\6_17\hanmin') #父目录不存在创建会报错,
# os.makedirs(r'E:\cnz\6_18\hanmin2') #父目录不存在也可以创建,
os.rename(r'E:\cnz\6_16\笔记','biji.txt')   #重命名文件
os.remove(r'E:\cnz\6_16\笔记') #删除文件,不能删除文件夹
os.rmdir(r'E:\cnz\6_16\test' )#只能删除空文件夹
os.getcwd() #获取当前工作路径
os.chdir( path ) #修改当前工作路径
os.system('ipconfig') #执行操作系统命令
result=os.popen('ipconfig').read() #获取命令执行结果
os.path.getsize('biji.txt') #获取文件大小
os.walk('E:\cnz\6_16')#获取目录下的所有文件夹、文件 os.path.dirname(r''E:\cnz\6_16'') #获取目录的父目录
os.path.join(path,path,path,username)#连接几个路径,不需要管分隔符
os.path.abspath(__file__) #获取当前路径的绝对路径
 
for cur_dir,dirs,files in os.walk(r'E:\cnz\6_16'):#三个参数代表的含义是固定的,位置也是固定的,3个参数必传
print(cur_dir) #当前文件夹
print(dirs) #当前目录下的所有文件夹
print(files) #当前目录下的所有文件
break

练习:查找指定目录下,有哪些文件:.mp4,.txt结尾的文件

#1.获取目录下有哪些文件  os.walk()
#2.判断文件名是否以.mp4,.txt结尾
def  find_files(path):
for cur_dir,dirs,files in os.walk(path):
print('当前查找路径',path)
for file in files:
if file.endswith('.mp4') or file.endswith('.txt'):
print('该目录下有寻找文件',file)
break
find_files(r'E:/')
os.path.dirname(r''E:\cnz\6_16'')  #获取目录的父目录
os.path.join(path,path,path,username) #连接几个路径,不需要管分隔符
print(os.path.join('e:\\','users','a.txt'))
os.path.abspath() #通过相对路径取绝对路径
print(os.path.abspath('../6_2')) #两个点代表上级目录,一个点代表当前路径,带点的是相对路径。
os.path.exists() #判断文件是否存在
print(os.path.exists(r'E:\cnz'))
os.path.split() #分割路径和文件名
print(os.path.split(r'E:\cnz\6_16\biji.txt')) os.path.gettime()#获取某个文件的修改时间,返回时间戳
os.path.getctime() #获取某个文件的创建时间,返回时间戳
os.path.getatime()#获取某个文件的最后访问的时间,返回时间戳
print(os.path.getctime(r'E:\cnz\6_16\biji.txt'))
print(os.path.getmtime(r'E:\cnz\6_16\biji.txt'))
print(os.path.getatime(r'E:\cnz\6_16\biji.txt'))
 

python基础:函数传参、全局变量、局部变量、内置函数、匿名函数、递归、os模块、time模块的更多相关文章

  1. python基础-第四篇-4.1内置函数

    lambda表达式 lambda表达式是对简单函数的精简化表达 语法结构:函数名 = lambda:运算表达式 def f1(a): a = a + 1 return a ret = f1(1) pr ...

  2. Python基础学习参考(三):内置函数

    一:内置函数 在第一篇文章中,我们简单的认识了一下print()函数和input()函数,也就是输入和输出,这些函数我们可以直接的调用,不要自己定义或者引入什么,对吧?想这样的函数就叫做内置函数.这里 ...

  3. python基础语法20 面向对象5 exec内置函数的补充,元类,属性查找顺序

    exec内置函数的补充 exec: 是一个python内置函数,可以将字符串的代码添加到名称空间中; - 全局名称空间 - 局部名称空间 exec(字符串形式的代码, 全局名称空间, 局部名称空间) ...

  4. 【python基础】第09回 数据类型内置方法 01

    本章内容概要 1.数据类型的内置方法简介 2.整型相关方法 3.浮点型相关方法 4.字符串相关方法 5.列表相关方法 本章内容详情 1.数据类型的内置方法简介 数据类型是用来记录事物状态的,而事物的状 ...

  5. Py修行路 python基础 (十八) 反射 内置attr 包装

    一.isinstance 和 issubclass1.isinstance(obj,cls)检查是否obj是否是类 cls 的对象.2.issubclass(sub, super)检查sub类是否是 ...

  6. 【python基础】第11回 数据类型内置方法 02

    本章内容概要 列表内置方法 字典内置方法 元组内置方法 集合内置方法 可变类型与不可变类型 本章内容详细 1.列表内置方法 list 列表在调用内置方法之后不会产生新的值 1.1 统计列表中的数据值的 ...

  7. python面试_总结01_概念和内置高阶函数

    - 简答题 1.请谈谈Python中is 和 == 的区别(代码演示) is用于比较两个变量是否引用了同一个内存地址,is表示的是对象标识符(object identity),作用是用来检查对象的标识 ...

  8. python学习日记(内置、匿名函数练习题)

    用map来处理字符串列表 用map来处理字符串列表,把列表中所有水果都变成juice,比方apple_juice fruits=['apple','orange','mango','watermelo ...

  9. c# 内存的具体表现- 通用类型系统 深拷贝 浅拷贝 函数传参

    c# 通用类型系统 及变量在 深拷贝 浅拷贝 函数传参 中的深层次的表现 在编程中遇到了一些想不到的异常,跟踪发现,自己对于c#变量在内存上的表现理解有偏差,系统的学习并通过代码实验梳理了各种情况下, ...

  10. x64汇编第三讲,64位调用约定与函数传参.

    目录 x64汇编第三讲,64位调用约定与函数传参. 一丶复习X86传参 二丶x64汇编 2.1汇编详解 x64汇编第三讲,64位调用约定与函数传参. 一丶复习X86传参 在x86下我们汇编的传参如下: ...

随机推荐

  1. File System Programming --- (一)

    About Files and Directories The file system is an important part of any operating system. After all, ...

  2. eclipse整合tomcat

    首先确保jdk已经安装好 步骤1 获得服务器运行环境配置,Window/Preferences/Server/Runtime Environmen l步骤2 添加服务器 步骤3 选择服务器在硬盘的地址 ...

  3. ccflow_002.表单引擎与流程引擎的关系

    本节主要内容 表单.数据.流程引擎的关系 图形展示三者之间的关系 流程编号和节点编号命名规则 这里的206就是这个流程的编号 2601:01就是当前节点的编号 流程编号206转换为int类型之后加上0 ...

  4. SVG如何嵌套在HTML中

    1.使用HTML标签 以下三个标签所有主流浏览器都支持 a.<iframe>标签 优势:允许使用脚本 缺点:虽然不是HTML5的新增标签,但是不推荐在HTML4 和 XHTML中使用 例: ...

  5. pip 国内安装镜像源

    转自: https://blog.csdn.net/xuezhangjun0121/article/details/81664260 pip国内的一些镜像   阿里云 http://mirrors.a ...

  6. scikit-learning教程(二)统计学习科学数据处理的教程

    统计学习:scikit学习中的设置和估计对象 数据集 Scikit学习处理来自以2D数组表示的一个或多个数据集的学习信息.它们可以被理解为多维观察的列表.我们说这些阵列的第一个轴是样本轴,而第二个轴是 ...

  7. Codeforces Round #261 (Div. 2) D

    Description Parmida is a clever girl and she wants to participate in Olympiads this year. Of course ...

  8. D Tree HDU - 4812

    https://vjudge.net/problem/HDU-4812 点分就没一道不卡常的? 卡常记录: 1.求逆元忘开longlong 2.把solve中分离各个子树的方法,由“一开始全部加入,处 ...

  9. 洛谷 P1892 团伙

    P1892 团伙 并查集 #include<cstdio> int fa[2500];//fa[i]表示i的朋友所在集合,fa[i+n]表示i的敌人所在集合 bool boo[2500]; ...

  10. DFS HDOJ 5348 Ponds

    题目传送门 题意:有一张无向图,度数小于2的点会被去掉,直到全都大于等于2,问连通块顶点数为奇数的权值和为多少 分析:首先DFS把度数小于2的vis掉,第二次DFS把属于同一个连通块的vis掉,检查是 ...