首页 > 编程语言 >python核心编程

python核心编程

时间:2024-05-25 08:56:52浏览次数:23  
标签:1.7 函数 python 核心 编程 对象 参数 变量

python核心编程

一、python函数

1.1 函数的概念

	概念:  代码实现了一个功能,集中放在一块,起个名字,下一次可以根据这个名字再次使用这个代码块,这就是函数
	
	作用:
		1. 方便代码重用
		2. 分解任务,简化程序逻辑
		3. 使代码更加模块化
	
	函数分类:
		1. 内建函数(python内置的一些函数)
		2. 三方函数(别人写好的,自己直接用)
		3. 自定义函数

1.2 函数的基本使用

	# 函数定义
	def 函数名():
		函数体
	
	# 函数调用
	函数名()

1.3 函数的参数

1.3.1 单个参数

	场景: 需要动态的调整函数体中某一个处理信息,则可以以参数的形式接收到相关数据
	
	定义:def 函数名(参数名称):
	
	函数的调用:函数名(参数值)
	形参和实参的概念:
		1. 上述函数定义中,“参数名称”即为形参
		2. 在调用函数的时候,传递的真实数据,即为实参

1.3.2 多个参数

	场景:需要动态的调整函数体中多个处理信息时,则可以以逗号做分割,接收多个参数
	
	定义:def 函数名(参数名称1,参数名称2):

	调用:
		1. 函数名(参数1,参数2,参数3...)	形参和实参一一对应
		2. 函数名(参数名称1=参数1,参数名称n=参数n...)
			可以指明形参名称,称为“关键字参数”
			不需要严格按照顺序

1.3.3 不定长参数

	场景:如果函数体中,需要处理的数据,不确定长度,则可以以不定长参数的方式接收数据
	
	方式1:
		定义:def 函数名(*args)	函数体内部可以以元组变量的方式使用该参数
		使用:函数名(参数1,参数2,参数3...)
	
	方式2:
		定义:def 函数名(**dic)	函数体中可以直接以字典变量的方式使用该参数
		使用:函数名(参数名称1=参数1,参数名称2=参数2...)
	
	参数拆包:
		装包:把传递的参数,包装成一个集合,称为"装包"
		拆包:把集合参数,再次分解成单独的个体,称为“拆包”
		

1.3.4 缺省参数

	场景:当我们使用一个函数的时候,如果大多数情况下,使用的某个数据是一个固定值,或者属于主功能之外的小功能实现,则可以去使用默认值,这种参数我们称为“缺省参数”
	
	定义:
		def 函数名(变量1=默认值1,变量名2=默认值2)
		在函数体中,即使外界没有传递指定变量,也可以使用,只不过值给的是默认值
	
	使用:
		函数名(变量1,变量2)	此处如果是缺省参数,则可以不填写

1.3.5 参数注意

	值传递和引用传递:
		值传递:传递过来只是原本数据的副本,修改副本,对原件没有任何影响
		引用传递:是指传递过来的,是一个变量的地址,通过地址,可以存在同一份原件
	
	注意:
		1. 在python当中,只有引用传递(地址传递)
		2. 如果数据类型是可变类型,则可以改变原件	
			可变类型有列表,集合,字典
		3. 如果数据类型是不可变类型,则不可以改变原件	
			python里面不可变的数据类型有以下几种,分别是整型,浮点数,字符串,元组,冻结集合,布尔值

1.4 函数的返回值

	场景:当我们通过某个函数,处理好数据之后,想要拿到处理的结果
	
	语法:
		def 函数():
			函数体
			return 数据
	
	注意:
		1. return后续代码不会被执行
		2. 只能返回一次
		3. 如果想要返回多个数据,把多个数据包装称为一个集合,整体返回(列表,元组,字典等)

1.5 函数的使用描述

	场景:当我们编写三方函数,为了方便他人使用,就需要描述清楚我们所写的函数功能以及使用方式等信息
	
	定义格式:
		def calculate(a, b=1):
    		"""
    		计算两个数据的和
    		:param a: 数值1,数值类型,不可选,没有默认值
   	 		:param b: 数值2,数值类型,可选,默认值:1
    		:return: 返回计算的结果
    		"""
    		return a+b
    
    查看函数使用文档		help(函数)
	
	经验:
		一般函数的描述,需要说明如下几个信息:
			1. 函数的功能
			2. 参数	例如:含义,类型,是否可以省略,默认值
			3. 返回值	例如:含义,类型
	

1.6 函数的作用域

	基本概念:变量的作用域
		1. 可操作的范围
		2. python是静态作用域,也就是说在python中,变量的作用域源于它在代码中的位置;在不同的位置,可能有不同的命名空间
		
	命名空间: 是作用域的体现形式
			  不同的具体的操作范围
	
	python_LEGB:
		1. L-Local	函数内的命名空间		作用范围:当前整个函数体范围
		2. E-Enclosing function locals	外部嵌套函数的命名空间	作用范围:闭包函数
		3. G-Global	全局的命名空间	作用范围:当前模块(文件)
		4. B-Builtin	内建模块命名空间	作用范围:所有模块(文件)
		
		注意:
		1. python里面没有块级作用域
		2. LEGB规则按照 L->E->G->B的顺序进行查找
	
	基于命名空间的常见变量类型
		1. 局部变量:在一个函数内部定义的变量,作用域为函数内部,查看局部变量 locals()
		2. 全局变量:
			2.1. 在函数外部,文件最外层定义的变量
			2.2. 作用域为整个文件内部
			2.3. 查看全局变量	globals()
		
		注意点:
			1. 访问原则 从内到外
			2. 全局变量命名的时候,用g_b 这样

1.7 相关函数

1.7.1 偏函数

	概念:当我们写一个参数比较多的函数时,如果有些参数,大部分场景下都是某一个固定值,那么为了简化使用,就可以创建一个新函数,指定我们要使用的函数的某个参数,为某个固定的值;这个新函数称为”偏函数“
	
	语法:
		方式1:自己写一个新的
		方式2:借助functools模块的partial函数
			import functools
			newFunc=functools.partial(函数,特定参数=偏爱值)

1.7.2 高阶函数

	概念:当一个函数A的参数,接收的又是另一个函数时,则把这个函数A称为是”高阶函数“
	
	例如:sorted函数(动态的计算两个数据)

1.7.3 返回函数

是指一个函数内部,它返回的数据是另外一个函数,把这样的操作称为”返回函数“

1.7.4 匿名函数

	概念:称为”lambda函数“,顾名思义,就是指没有名字的函数
	
	语法:
		1. lambda 参数1,参数2...:表达式
		2. 限制
			只能写一个表达式		不能直接return
			表达式的结果就是返回值
			所以,只适用于一些简单的操作处理

1.7.5 闭包

	概念:
		1. 在函数嵌套的前提下
		2. 内层函数引用了外层函数的变量(包括参数)
		3. 外层函数,又把内层函数当做返回值进行返回
	
	标准格式:
		def test1(a):
    		b = 10
    		def test2():
        		print(a)
        		print(b)
			return test2
	
	应用场景:外层函数,根据不同的参数,来生成不同作用功能的函数
	
	注意事项:
		闭包中,如果要修改引用的外层变量,需要使用 nonlocal 变量 进行声明,否则会当作是闭包内新定义的变量
		

1.7.6 装饰器

	作用:在函数名以及函数体不改变的前提下,给一个函数附加一些额外代码
	代码:

在这里插入图片描述

	注意:装饰器的执行时间是立即执行

	进阶:
		1. 装饰器叠加 从上到下装饰,从下到上执行
		2. 对有参函数进行装饰
			2.1 无论什么场景,保证函数调用参数个数一致
			2.2 为了通用,可以使用不定长参数,结合拆包操作进行处理
		3. 对有返回值的函数进行装饰	无论什么场景,保证函数返回值一致
		4. 带有参数的装饰器
			4.1	通过@装饰器(参数)的方式,调用这个函数,并传递参数;并把返回值,再次当做装饰器来进行使用
			4.2 先计算@后面的内容,把这个内容当作是装饰器

二、python面向对象

2.1 基本理论

	1.什么是对象?
		万物皆为对象,对象是具体的事物:
			1. 拥有属性
			2. 拥有行为
			3. 把很多零散的东西,封装为一个整体
			
	2. python中体现:python是一门特别彻底的面向对象编程(OOP)的语言

	3. 面向过程&面向对象
		都是解决问题的思路
		
		面向过程:在解决问题的时候,关注的是解决问题的每个过程(步骤)
		
		面向对象:在解决问题的时候,关注的是解决问题所需要的对象
		
		对比:
			1. 面向对象和面向过程都是解决问题的一种方式(思想)		面向对象本身是对面向过程的封装
			2. 面向过程编程最重要的是按照步骤划分,把一个任务,分解成具体的每一个步骤
			
			3. 面向对象编程最重要的是划分不同的对象,之后去确定对象的属性和行为
			
			4. 如何从面向过程编程思想,过渡到面向对象编程?
				4.1 先列举出一个任务的具体实现的步骤
				4.2	试图分离这些实现步骤的功能代码块
				4.3 将这些功能代码块,划分到某一个对象中
				4.4 根据整个对象以及对应的行为,抽象出对应的类
	4. 类
		4.1 类:某个具体对象特征的抽象
		4.2 类的作用:根据抽象的类,生产具体的对象
		4.3 类的组成:
			名称
			属性
			方法
			
			注意:
				以上属性和方法,都是抽象的概念
				在产生对象之后,对象才用于具体的属性值,和方法实现
		对象和类的关系:对象可以抽象为类,类可以实例化对象

2.2 面向对象在python中实践

	1. 如何去定义一个类?
		class 类名: pass	里面的pass表示一个空语句,为了去保证整个结构的一个完整
	
	2. 通过一个类,创建出一个对象?
		变量=类名() 进行实例化
	
	3. 属性相关
		3.1 属性和变量的区别及判定依据?
			区别:
				1. 概念:
					变量是”可以改变的量值“
					属性是”属于某个对象的特性“
					
				2. 访问权限:
					变量:根据不同的位置,存在不同的访问权限
					属性:只能通过对象来进行访问
			
			判定依据:是否存在宿主
	
	4. 对象属性
		4.1  怎样让一个对象拥有一些属性?(增)
			1. 直接通过对象,动态添加	对象.属性 = 值
			2. 通过类的初始化方法(构造方法)	__init__方法
		
		4.2 怎样访问或者修改一个对象的属性?(查,改)
			通过对象.属性来进行查询,如果之前没有就是查询,有的话就是修改
		
		4.3 怎样删除一个对象的属性?(删)
			del 对象.属性

标签:1.7,函数,python,核心,编程,对象,参数,变量
From: https://blog.csdn.net/m0_49635911/article/details/139071272

相关文章

  • python基础 - 文件的读写和yaml文件读取
    读取文件读取文件用withopen(文件路径,读写模式)r读(默认值),w写,a追加写#读文件的几种方式:1、read()返回文件内容,返回的是字符串filepath='D:/note1.txt'withopen(filepath,'r')asf:print(f.read())2、readLine()返回文件一行的内容,返回的是字符串withopen(filepath,'r')as......
  • 调试python项目
    对于开源项目,通常需要调试来掌握细节。调试的方法有很多,pdb,IDE调试等等。对于从命令行直接启动的项目,首先需要找到项目的入口,以open-interpreter为例其中,--os模式需要在命令行中输入interpreter--os。这里的interpreter实际上是一个可执行文件interpreter.exe。以这种方式运......
  • 【最新】2023版北大中文核心期刊目录(1987本)完整版
    2023年北大中文核心期刊调整情况   总体数量:2023年版第十版北大核心期刊目录共收录1987本核心期刊,与前一版(2020年版)相比,数量上仅减少了3本。刊物调整:刊物调整:在具体的刊物调整上,变化非常显著。新入选的期刊有127本,而被剔除的期刊有130本。电工方面期刊变化是需要重点关......
  • Shell编程完成用户注册登录
    目录需求1.menu界面welcome(1)注册用户(2)用户登录(3)退出2.注册用户(1)用户名(首字母大写)(2)密码(8位及其以上必须有三个字符其中一个以上如:&$_隐试密码)(3)手机号码(必须以139开头)(4)邮箱邮箱名数字开头@qq.com(5)检测是否重名,重手机号和邮箱(6)不重名、手机号、邮箱写入......
  • 分布式计算编程项目二
    利用RPC技术实现一个学生信息管理系统目录利用RPC技术实现一个学生信息管理系统一、具体要求二、相关理论理论迭代1.单机结构2.集群结构3.微服务结构微服务介绍RPC介绍使用到的相关包MySQL启动方法三、代码架构四、功能实现+界面展示基本功能:技术点:1.查询速度提高2.数据模型和......
  • Python常用术语
    在学习和使用Python编程语言时,会遇到许多常用术语。下面是一些Python编程中常见的术语及其简要解释:基本概念变量(Variable):用于存储数据的命名位置。变量可以存储不同类型的数据,如整数、字符串、列表等。数据类型(DataType):指变量可以存储的数据的类型。Python中的基本......
  • WinSock 的多线程编程
    目录概述Winsock为什么需要多线程阻塞模式和非阻塞模式单线程和多线程的优缺点Win32系统下的多进程多线程机制进程和线程线程创建线程同步线程通信  VC++对多线程网络编程的支持MFC中的多线程支持ATL中的多线程支持多线程FTP客户端实例头文件包含线......
  • Python3 笔记:sort() 和 sorted() 的区别
    1、sort()可以对列表中的元素进行排序,会改变原列表,之前的顺序不复存在。list.sort(key,reverse=None) key:默认值是None,可指定项目进行排序,此参数可省略。 reverse:默认值是None指做升序排序,“reverse=True”则做降序排序。无论列表中的元素是数值还是字符串都能排序,但......
  • Python中idle无法打开问题
    问题描述由于之前下载过python,但是没有开始学习,今天在开始学习之前修改了一下python文件夹的文件名,更改了环境变量里python路径,但是在通过搜索应用程序打开idle时没有反应解决方案由于修改了python的文件名,idle快捷方式里的起始和目标路径没有进行修改,导致没法通过快捷方式打......
  • 基于Python的性能优化--多线程、协程、多进程
    合集-Python(1) 1.基于Python的性能优化05-24收起 一、多线程在CPU不密集、IO密集的任务下,多线程可以一定程度的提升运行效率。importthreadingimporttimeimportrequestsdeffetch_url(url:str)->None:'''根据地址发起请求,获取响应-url:......