Python基础教程学习-函数与类

函数

函数执行特定的操作并返回一个值,你可以调用它 调用时可能需要提供一些参数——放在圆括号中的内容

定义函数

def hello(name):
	return 'Hello, ' + name + '!'
>>> print(hello('world'))
Hello, world!

def square(x):
	'Calculates the square of the number x.'
	return x * x
# 可以像下面这样访问文档字符串:
>>> square.__doc__
'Calculates the square of the number x.'

函数参数

函数参数存储在 局部作用域内

# 位置参数
pass 普通函数
# 关键字参数和默认值  为了简化调用工作,可指定参数的名称。关键字参数最大的优点在于,可以指定默认值
>>> hello_1(name='world', greeting='Hello')
Hello, world!

def hello_3(greeting='Hello', name='world'):
	print('{}, {}!'.format(greeting, name))
# 收集参数,如果没有可供收集的参数, params 将是一个空元组
def print_params(*params):
	print(params)
>>> print_params(1, 2, 3)
(1, 2, 3)

def print_params_2(title, *params):
	print(title)
	print(params)
>>> print_params_2('Params:', 1, 2, 3)
Params:
(1, 2, 3)

>>> def in_the_middle(x, *y, z):
... print(x, y, z)
...
>>> in_the_middle(1, 2, 3, 4, 5, z=7)
1 (2, 3, 4, 5) 7
要收集关键字参数,可使用两个星号。
>>> def print_params_3(**params):
... print(params)
...
>>> print_params_3(x=1, y=2, z=3)
{'z': 3, 'x': 1, 'y': 2}
# 分配参数
def add(x, y):
	return x + y
params = (1, 2)
>>> add(*params)  #通过在调用函数(而不是定义函数)时使用运算符 * 实现的
3

def hello_3(greeting='Hello', name='world'):
	print('{}, {}!'.format(greeting, name))
>>> params = {'name': 'Sir Robin', 'greeting': 'Well met'}
>>> hello_3(**params)
Well met, Sir Robin!

作用域

有一个名为 vars 的内置函数,它返回这个不可见的字典,这种“看不见的字典”称为命名空间或作用域
>>> x = 1
>>> scope = vars()
>>> scope['x']
1
>>> scope['x'] += 1
>>> x
2
函数内使用的变量称为局部变量(与之相对的是全局变量)。参数类似于局部变量,因此参数与全局变量同名不会有任何问题
>>> def output(x): print(x)
...
>>> x = 1
>>> y = 2
>>> output(y)
2
可使用函数 globals 来访问全局变量。这个函数类似于 vars ,返回一个包含全局变量的字典。( locals 返回一个包含局部变量的字典。)

递归

阶乘和幂
def factorial(n):
	if n == 1:
		return 1
	else:
		return n * factorial(n - 1)

def power(x, n):
	if n == 0:
		return 1
	else:
		return x * power(x, n - 1)


二分查找
def search(sequence, number, lower, upper):
	if lower == upper:
		assert number == sequence[upper]
		return upper
	else:
		middle = (lower + upper) // 2
		if number > sequence[middle]:
			return search(sequence, number, middle + 1, upper)
		else:
			return search(sequence, number, lower, middle)

新函数

在这里插入图片描述

自定义类

class Person:
	def set_name(self, name):
		self.name = name
		
	def get_name(self):
		return self.name
		
	def greet(self):
		print("Hello, world! I'm {}.".format(self.name))

类的命名空间

在 class 语句中定义的代码都是在一个特殊的命名空间(类的命名空间)内执行的,而类的所有成员都可访问这个命名空间

class MemberCounter:

	members = 0
	
	def init(self):
		MemberCounter.members += 1
		
>>> m1 = MemberCounter()
>>> m1.init()
>>> MemberCounter.members
1
>>> m2 = MemberCounter()
>>> m2.init()
>>> MemberCounter.members
2

如果你在一个实例中给属性 members 赋值,结果将如何呢?
>>> m1.members = 'Two' #新值被写入 m1 的一个属性中,这个属性遮住了类级变量
>>> m1.members  
'Two'
>>> m2.members
2

抽象类

from abc import ABC, abstractmethod
class Talker(ABC):
	@abstractmethod
	def talk(self):
		pass

新方法

在这里插入图片描述

本项目是一个基于SSM(Spring+SpringMVC+MyBatis)框架和Vue.js前端技术的大学生第二课堂系统,旨在为大学生提供一个便捷、高效的学习和实践平台。项目包含了完整的数据库设计、后端Java代码实现以及前端Vue.js页面展示,适合计算机相关专业的毕设学生和需要进行项目实战练习的Java学习者。 在功能方面,系统主要实现了以下几个模块:用户管理、课程管理、活动管理、成绩管理和通知公告。用户管理模块支持学生和教师的注册、登录及权限管理;课程管理模块允许教师上传课程资料、设置课程时间,并由学生进行选课;活动管理模块提供了活动发布、报名和签到功能,鼓励学生参与课外实践活动;成绩管理模块则用于记录和查询学生的课程成绩和活动参与情况;通知公告模块则实时发布学校或班级的最新通知和公告。 技术实现上,后端采用SSM框架进行开发,Spring负责业务逻辑层,SpringMVC处理Web请求,MyBatis进行数据库操作,确保了系统的稳定性和扩展性。前端则使用Vue.js框架,结合Axios进行数据请求,实现了前后端分离,提升了用户体验和开发效率。 该项目不仅提供了完整的源代码和相关文档,还包括了详细的数据库设计文档和项目部署指南,为学习和实践提供了便利。对于基础较好的学习者,可以根据自己的需求在此基础上进行功能扩展和优化,进一步提升自己的技术水平和项目实战能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值