【Python】基础知识(二) 函数-字典-集合-文件-文件系统

函数

定义
调用
参数
  1. 形参
    函数定义过程中的参数叫形参
  2. 实参
    函数调用实传递进来的参数叫实参
关键字参数

形参 = 实参,用于指定需要赋值的参数

默认值

定义时赋给的值

收集函数

收集函数也称为可变函数,在参数前面加个* 就行

>>> def fun(* params):
   print('有{}个参数'.format(len(params)))
   print('收集参数是:',params)
 
>>> fun(1,2,3,4,5)5个参数
收集参数是: (1, 2, 3, 4, 5)
返回值

有,返回
无,返回none

作用域

函数内部定义的参数和变量都是局部变量,只在函数内部有效
函数外定义的变量是全局变量,整个程序皆可访问,但不要试图在函数内部改变它

global x		#函数中定义全局变量,则可修改,整个程序有效
内嵌函数

py允许函数嵌套

>>> def fun1():
	print('fun1正在被调用')
	def fun2():
		print('fun2正在被调用')
	fun2()
	
>>> fun1()
fun1正在被调用
fun2正在被调用

但是不允许直接调用内嵌函数

lambda表达式
  • 省去函数定义过程
  • 无需考虑命名
  • 阅读时省去函数跳到def定义部分
>>> g = lambda x,y:x + y
>>> g(3,4)
7

fiiter
map

递归
'''手动修改最高递归次数'''
>>> import sys
>>> sys.setrecursionlimit(100000)

自己调用自己
⚠️要设置结束条件

字典

是一种映射类型
标志性符号:大括号{ }

创建和访问字典
dict = {1:'one',2:'two',3:'three'}		#创建一个字典
{1: 'one', 2: 'two', 3: 'three'}

dict[1] = 'A'		#修改字典中的值,若没有key值则添加该项目
{1: 'A', 2: 'two', 3: 'three'}
字典的内嵌方法
  • fromkeys(S[,v])
    创建并返回一个新的字典
>>> dict2.fromkeys((1,2,3),'Number')
{1: 'Number', 2: 'Number', 3: 'Number'}		#注意后面valua只能给一个,赋给所有的key
  • keys()

得key值

dict.keys()
  • items()
    得元组 (key0,value0)
dict.items()
  • get()
    有就返回value,没有返回None
  • 快速查看一个键是否存在
>>> 31 in dict
True
  • clear()
 dict.clear()		#清空该字典
  • copy()
    浅拷贝,原字典改变不影响拷贝品(直接赋值会影响)
  • pop()
dict1.pop(1)		#返回key1对应的value值,同时删除该项
  • popitem()
dict2.popitem()		#返回并弹出(删除)最后一项
  • update()
dict1.update(dict2)		#把dict2加到dict1后面
集合

集合中所有的元素都具有唯一性,自动剔除重复的元素
集合是无序的,不能索引

  • 创建一个集合
  1. 直接用花括号括起来一堆元素
  2. 使用set()工厂函数
>>> set1 = set([1,23,5,251,4,1])
>>> set1
{1, 4, 5, 23, 251}		#得到的是剔除重复元素的集合【无序的】

[1, 2, 3, 4, 5, 0]
>>> num2 = [1,1,3,23,43,32,21,23,23,23]
>>> num2 = list(set(num2))		#调用set方法把num2变成没有重复元素的集合,再用list方法转成列表
>>> num2
[32, 1, 3, 43, 21, 23]

⚠️set方法得到的无序的集合,若注重前后顺序,使用时要小心

  • 访问集合中的元素的值
  1. 使用for把集合中的元素一个个读取出来
  2. 用in和not in判断以一个元素是否在集合中已经存在
  • 添加和移除元素
num2.add(666)		#添加元素666
num2.remove(1)		#移除元素1
  • 不可变集合
 num3 = frozenset([1,2,3,4])
文件

(空)

文件系统

导入(import)后可以使用模块中预设的方法
常用模块:

  • random
secret = random.randint(1,10)		#随机生成一个1——10的整数
  • os
os.getcwd()			#获取当前工作目录
chdir(path)			#改变当前工作目录(path是字符串)
listdir(path)		#列举指定目录中的文件名('.'或空表示当前目录,'..'表示上一级目录)
mkdir(path)			#创建单层目录,若已存在则抛出异常
makedirs(path)		#递归创建多层目录,若已存在则抛出异常
remove(path)		#删除文件!
rmdir(path)			#删除目录!若该目录非空则抛出异常
removedirs(path)	#递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空(有子目录和文件)则抛出异常【只能删除最里层的目录】
rename(old,new)		#将文件名old重命名为new(加路径)

  • os.path
os.path.abspath(path) 			#返回绝对路径
os.path.basename(path) 			#只返回文件名
os.path.commonprefix(list) 		#返回list(多个路径)中,所有path共有的最长的路径。
os.path.dirname(path) 			#返回文件路径

os.path.exists(path)  			#路径存在则返回True,路径损坏返回False

os.path.lexists  				#路径存在则返回True,路径损坏也返回True

os.path.expanduser(path)  		#把path中包含的"~"和"~user"转换成用户目录
os.path.expandvars(path)  		#根据环境变量的值替换path中包含的”$name”和”${name}”

os.path.getatime(path)  		#返回最后一次进入此path的时间。

os.path.getmtime(path)  		#返回在此path下最后一次修改的时间。
	
os.path.getctime(path)  		#返回path的大小

os.path.getsize(path)  			#返回文件大小,如果文件不存在就返回错误

os.path.isabs(path)  			#判断是否为绝对路径

os.path.isfile(path)  			#判断路径是否为文件

os.path.isdir(path)  			#判断路径是否为目录

os.path.islink(path) 		 	#判断路径是否为链接

os.path.ismount(path)  			#判断路径是否为挂载点()

os.path.join(path1[, path2[, ...]])  #把目录和文件名合成一个路径,获得的path = path1 + path2

os.path.normcase(path)  		#转换path的大小写和斜杠

os.path.normpath(path)  		#规范path字符串形式
	
os.path.realpath(path)  		#返回path的真实路径

os.path.relpath(path[, start])  #从start开始计算相对路径

os.path.samefile(path1, path2)  #判断目录或文件是否相同

os.path.sameopenfile(fp1, fp2)  #判断fp1和fp2是否指向同一文件

os.path.samestat(stat1, stat2)  #判断stat tuple stat1和stat2是否指向同一个文件

os.path.split(path)  			#把路径分割成dirname和basename,返回一个元组

os.path.splitdrive(path)   		#一般用在windows下,返回驱动器名和路径组成的元组

os.path.splitext(path)  		#分割路径,返回路径名和文件扩展名的元组

os.path.splitunc(path)  		#把路径分割为加载点与文件

os.path.walk(path, visit, arg)  #遍历path,进入每个目录都调用visit函数,visit函数必须有3个参数(arg, dirname, names),dirname表示当前目录的目录名,names代表当前目录下的所有文件名,args则为walk的第三个参数

os.path.supports_unicode_filenames  #设置是否支持unicode路径名
  • pickle
    泡菜模块,把数据拎出来

python模块 - pickle模块
tickle详细介绍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值