湖州网站设计平台/长春关键词优化公司

湖州网站设计平台,长春关键词优化公司,国外做婚纱摄影店设计的网站,广告设计与制作专业分析1、函数的定义及调用 1.1 为什么需要函数 提高代码复用性——封装将复杂问题分而治之——模块化利于代码的维护和管理 1.1.1 顺序式 n 5 res 1 for i in range(1, n1):res * i print(res) # 输出:1201.1.2 抽象成函数 def factorial(n):res 1for i in range(1…

1、函数的定义及调用

1.1 为什么需要函数

  1. 提高代码复用性——封装
  2. 将复杂问题分而治之——模块化
  3. 利于代码的维护和管理

1.1.1 顺序式

n = 5
res = 1
for i in range(1, n+1):res *= i
print(res)
# 输出:120

1.1.2 抽象成函数

def factorial(n):res = 1for i in range(1, n+1):res *= ireturn resprint(factorial(5))
# 输出:120

1.2 函数定义及调用

  1. 白箱子:输入,处理,输出
  2. 三要素:参数、函数体、返回值

1.2.1 定义

模块——def 函数名(参数):
      函数体
      return 返回值

def area_of_square(n):area = pow(n, 2)return area

1.2.2 调用

模块——函数名(参数)

area = area_of_square(5)
print(area)
# 输出:25

1.3 参数传递

1.3.1 形参和实参

(1)形参:

函数定义时的参数,本质上是变量名

(2)实参:

函数调用时的参数,本质上是变量值

1.3.2 位置参数

  1. 要求:严格按照位置顺序,用实参对形参进行赋值
  2. 适用:通常在参数比较少时
  3. 注意:实参与形参个数必须一一对应,不多不少
def function(x, y, z):print(x, y, z)function(1, 2, 3)
# 输出:1 2 3
function(1, 2, 3, 4)
# 输出:TypeError: function() takes 3 positional arguments but 4 were given

1.3.3 关键字参数

  1. 模板:形参名=实参值
  2. 适用:通常在参数比较多时
  3. 要求:实参与形参必须一 一对应
def function(x, y, z):print(x, y, z)function(x=1, z=2, y=3)
# 输出:1 3 2
  • 位置参数可以和关键字参数混用,但位置参数必须在关键字参数之前
function(1, z=2, y=3)
# 输出:1 3 2
function(x=1, 2, z=3)
# 输出:SyntaxError: positional argument follows keyword argument
  • 不能为同一个形参重复传值
function(1, z=2, x=3)
# 输出:TypeError: function() got multiple values for argument 'x'

1.3.4 默认参数

  1. 定义:默认参数是编程语言中函数定义的一种特性,它允许在声明函数时为参数指定一个默认值。如果调用函数时没有提供该参数的值,则使用默认值。
  • 默认参数必须在非默认参数后面
  • 调用函数时,可不对默认参数的形参传值
def greet(name, message="你好, "):print(f"{message}{name}")# 使用默认的message参数
greet("小李")
# 输出:你好, 小李
# 覆盖默认的message参数
greet("小张", "欢迎你, ")
# 输出:欢迎你, 小张
  • 默认参数应设置为不可变类型(数字、字符串、元组)
def add_item(item, my_list=[]):my_list.append(item)return my_listprint(add_item('apple'))
# 输出: ['apple']
print(add_item('banana'))
# 输出: ['apple', 'banana']def add_item(item, my_list=None):if my_list is None:my_list = []my_list.append(item)return my_listprint(add_item('apple'))
# 输出: ['apple']
print(add_item('banana'))
# 输出: ['banana']
  • 参数可选
def name(first_name, last_name, middle_name=None):if middle_name:return first_name + middle_name + last_nameelse:return first_name + last_nameprint(name("王", "源"))
# 输出:王源
print(name("王", "凯", "俊"))
# 输出:王俊凯

1.3.5 可变长参数——args和kwargs

  1. 定义:允许函数接受任意数量的位置参数和关键字参数
  2. 用途:当你不确定一个函数将接收多少个参数时
(1)*args:

传递一个非键值对的可变数量的参数列表给函数。星号(*)表示将参数应该视为元组来处理

def test_var_args(f_arg, *argv):print("第一个常规参数:", f_arg)print(argv)for arg in argv:print("另一个通过*args传入的参数:", arg)test_var_args('Python', 'Rocks', 'For', 'Data', 'Science')
# 输出:第一个常规参数: Python
#      ('Rocks', 'For', 'Data', 'Science')
#      另一个通过*args传入的参数: Rocks
#      另一个通过*args传入的参数: For
#      另一个通过*args传入的参数: Data
#      另一个通过*args传入的参数: Science
(2)*kwargs:

允许将不定长度的键值对作为参数传递给一个函数。双星号(**)表示将参数视为字典来处理

def greet_me(**kwargs):print(kwargs)for key, value in kwargs.items():print("{0} = {1}".format(key, value))greet_me(name="小李", age=25, city="北京")
# 输出:{'name': '小李', 'age': 25, 'city': '北京'}
#      name = 小李
#      age = 25
#      city = 北京

1.4 函数体和变量作用域

  1. 函数体:指在定义一个函数时,包含在函数声明和结束之间的所有代码块
  2. 局部变量:在函数内部定义的变量,其作用范围仅限于定义它的函数内部,不能在函数外部被访问或修改
  3. 全局变量:在所有函数之外定义的变量,可以在文件的任何地方被访问(包括所有函数内部)
# 定义一个全局变量
global_var = "我是全局变量"def check_scope():# 定义一个局部变量local_var = "我是局部变量"print(local_var)  # 可以访问局部变量# 输出:我是局部变量"""# 访问全局变量print(global_var)# 输出:UnboundLocalError: cannot access local variable 'global_var' where it is not associated with a value"""# 尝试修改全局变量的值,不使用global时会创建一个新的局部变量global_var = "尝试修改全局变量失败"print(global_var)# 输出:尝试修改全局变量失败def modify_global_var():global global_var  # 使用global关键字声明我们要使用全局变量global_var = "全局变量已被修改"print(global_var)# 输出:全局变量已被修改# 调用函数
check_scope()
print(global_var)
# 输出:我是全局变量
modify_global_var()
print(global_var)
# 输出:全局变量已被修改
"""
# 在函数外部无法访问局部变量
print(local_var)
# 输出:NameError: name 'local_var' is not defined. Did you mean: 'global_var'?
"""

1.5 返回值

1.5.1 单个返回值

def function(x):return x**3res = function(2)
print(res)
# 输出:8

1.5.2 多个返回值

def function1(x):return x, x**2, x**3print(function1(2))
# 输出:(2, 4, 8)
a, b, c = function1(3)
print(a, b, c)
# 输出:3 9 27

1.5.3 多个return语句(只执行其中一个)

def function2(x):if x in ['Sunday', 'Saturday']:return "weekend"else:return "weekday"print("这一句根本没有机会不执行")print(function2('Saturday'))
# 输出:weekend
print(function2('Monday'))
# 输出:weekday

1.5.4 没有return语句(返回值为None)

def function3(x):print("没有返回值")print(function3(1))
# 输出:没有返回值
#      None

2、匿名函数

2.1 基本形式

lambda 变量:
  函数体

2.2 常见用法

2.2.1 排序——sort()/sorted()

ls = [(98, 88), (78, 99), (86, 74), (90, 90), (78, 96)]
ls.sort()  # 基于每个元组的第一个元素进行排序
print(ls)
# 输出:[(78, 96), (78, 99), (86, 74), (90, 90), (98, 88)]ls.sort(key=lambda x: x[1])  # 基于每个元组的第二个元素进行排序
print(ls)
# 输出:[(86, 74), (98, 88), (90, 90), (78, 96), (78, 99)]ls1 = sorted(ls, key=lambda x: x[1]+x[0], reverse=True)
print(ls1)
# 输出:[(98, 88), (90, 90), (78, 99), (78, 96), (86, 74)]

2.2.2 最值——max()/min()

ls2 = max(ls, key=lambda x: x[1])
print(ls2)
# 输出:(78, 99)ls3 = min(ls, key=lambda x: x[1])
print(ls3)
# 输出:(86, 74)

3、面向过程和面向对象

3.1 面向过程

3.1.1 定义

一种编程范式,通过一系列的过程或函数来组织代码

3.1.2 关注

“怎么做”,即如何一步步地解决问题

3.1.3 特点

(1)流程控制:

程序由一系列顺序执行的语句组成,包括条件判断、循环等

(2)模块化:

将代码分解为多个函数或过程,每个函数或过程负责完成一个特定的任务

(3)数据与操作分离:

数据和对数据的操作通常是分开定义的。函数接收数据作为参数,处理后可能返回结果

(4)易于理解和实现:

对于简单的任务或者逻辑较为直接的问题,面向过程的方法通常更加直观易懂

def calculate_area(radius):pi = 3.14159return pi * (radius**2)def main():r = 5area = calculate_area(r)print("半径为", r, "的圆的面积为:", area)main()
# 输出:半径为 5 的圆的面积为: 78.53975

3.2 面向对象

3.2.1 定义

一种基于“对象”概念的编程范式,对象可以包含数据(属性)和方法(行为)

3.2.2 关注

“是什么”,即把问题分解成一组相互关联的对象,每个对象都是某个类的实例

3.2.3 特点

(1)封装:

将数据和操作数据的方法捆绑在一起,隐藏内部状态,并要求所有交互都通过对象的公开接口进行

(2)继承:

一个类可以从另一个类继承属性和方法,这促进了代码重用并允许创建层次结构

(3)多态:

允许子类提供其父类方法的不同实现,使得同一类型的对象可以以不同的方式响应相同的方法调用

(4)抽象:

简化复杂性的一种策略,通过隐藏具体的实现细节,只暴露必要的功能给用户

class Circle:def __init__(self, radius):self.radius = radiusdef calculate_area(self):pi = 3.14159return pi * (self.radius ** 2)def main():c = Circle(5)print("半径为", c.radius, "的圆的面积为:", c.calculate_area())main()
# 输出:半径为 5 的圆的面积为: 78.53975

3.3 区别

3.3.1 设计理念

面向过程编程注重算法的设计,而面向对象编程更关心数据结构的设计及其上的操作

3.3.2 扩展性

由于封装、继承和多态的存在,面向对象编程更容易扩展和维护,特别是在大型项目中

3.3.3 复用性

面向对象编程通过类和继承机制提高了代码的复用性,减少了重复代码

3.3.4 适用场景

面向过程编程适合解决小规模、线性的任务;面向对象编程更适合于构建大型、复杂的软件系统,尤其是那些需要长期维护和发展的情况


微语录:万物皆有裂痕,那是光照进来的地方。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/70918.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Web 信息收集] Web 信息收集 — 手动收集 IP 信息

关注这个专栏的其他相关笔记:[Web 安全] Web 安全攻防 - 学习手册-CSDN博客 0x01:通过 DNS 服务获取域名对应 IP DNS 即域名系统,用于将域名与 IP 地址相互映射,方便用户访问互联网。对于域名到 IP 的转换过程则可以参考下面这篇…

基于定制开发开源AI大模型S2B2C商城小程序的商品选品策略研究

摘要:随着电子商务的蓬勃发展和技术的不断进步,商品选品在电商领域中的重要性日益凸显。特别是在定制开发开源AI大模型S2B2C商城小程序的环境下,如何精准、高效地选择推广商品,成为商家面临的一大挑战。本文首先分析了商品选品的基…

labview中VISA串口出现异常的解决方案

前两天在做项目时发现,当用VISA串口读取指令时出现了回复异常的情况,不管发什么东西就一直乱回,针对这个情况,后面在VISA串口中加了一个VISA寄存器清零的函数。加了之后果然好多了,不会出现乱回的情况,但是…

staruml绘制时序图和用例图

文章目录 1.文章介绍2.绘制用例图3.绘制时序图 1.文章介绍 之前,我们初步介绍了这个staruml软件的安装和如何使用这个软件对于uml类图进行绘制,当时我们是绘制了这个user类,实现了相关的接口,表示他们之间的关系,在今…

开放标准(RFC 7519):JSON Web Token (JWT)

开放标准:JSON Web Token 前言基本使用整合Shiro登录自定义JWT认证过滤器配置Config自定义凭证匹配规则接口验证权限控制禁用session缓存的使用登录退出单用户登录Token刷新双Token方案单Token方案 前言 JSON Web Token (JWT) 是一种开放标准…

使用 Polars 进行人工智能医疗数据分析(ICU数据基本测试篇)

引言 在医疗领域,数据就是生命的密码,每一个数据点都可能蕴含着拯救生命的关键信息。特别是在 ICU 这样的重症监护场景中,医生需要实时、准确地了解患者的病情变化,以便做出及时有效的治疗决策。而随着医疗技术的飞速发展&#x…

瑞芯微RK安卓Android主板GPIO按键配置方法,触觉智能嵌入式开发

触觉智能分享,瑞芯微RK安卓Android主板GPIO按键配置方法,方便大家更好利用空闲IO!由触觉智能Purple Pi OH鸿蒙开发板演示,搭载了瑞芯微RK3566四核处理器,树莓派卡片电脑设计,支持安卓Android、开源鸿蒙Open…

SSL 证书是 SSL 协议实现安全通信的必要组成部分

SSL证书和SSL/TLS协议有着密切的关系,但它们本质上是不同的概念。下面是两者的区别和它们之间的关系的表格: 属性SSL/TLS 协议SSL证书英文全称SSL(Secure Sockets Layer),TLS(Transport Layer Security&am…

QT:模型视图代理

Qt Model/View/Delegate(MVD)框架,它是 Qt 中用于实现数据显示和编辑的一种架构模式,主要由模型(Model)、视图(View)和委托(Delegate)三部分组成,…

PowerShell 执行策略:fnm管理软件安装nodejs无法运行npm,错误信息:about_Execution_Policies

通过fnm管理软件安装NodeJS后添加环境变量依然无法执行npm,提示无法加载文件,错误如下: PowerShell 执行策略简介: PowerShell 执行策略是一项安全功能,用于控制 PowerShell 加载配置文件和运行脚本的条件。 此功能有助于防止恶…

利用 Windows Terminal 和 SSH Config 简化 Linux 服务器管理

在日常的 Linux 服务器管理中,频繁登录不同的主机是一项常见任务。传统方法可能需要记住复杂的 IP 地址、用户名和端口,或者依赖如 Xshell 这样的第三方工具。但借助 Windows Terminal 和 SSH 的 .ssh/config 文件,我们可以打造一个高效、免费…

DeepSeek-R1-671B大模型满血版私有化部署高可用教程-SparkAi系统集成图文教程

DeepSeek官网服务器繁忙的主要原因是由于用户数量激增导致的服务器资源紧张。‌为了解决这一问题,DeepSeek团队已经暂停了API服务充值,以避免对用户造成业务影响。目前,存量充值金额仍可继续调用,但充值功能暂时不可用‌。 DeepSe…

【项目管理】基于 C 语言的 QQ 聊天室实现(TCP + 多线程 + SQLite3)

基于 C 语言的 QQ 聊天室(TCP + 多线程 + SQLite3) 项目功能基础功能: 登录、注册、添加好友、私聊、创建群聊、群聊扩展功能: 删除好友、注销账号、好友在线状态、群管理(拉人/踢人)、VIP 特权、邮件通知等 功能介绍:模拟QQ聊天客户端:登录界面:1、登录2、注册 //将用…

SOC-ATF 安全启动BL1流程分析(1)

一、ATF 源码下载链接 1. ARM Trusted Firmware (ATF) 官方 GitHub 仓库 GitHub 地址: https://github.com/ARM-software/arm-trusted-firmware 这是 ATF 的官方源码仓库,包含最新的代码、文档和示例。 下载方式: 使用 Git 克隆仓库: git…

.Net Core Visual Studio NuGet.Config 配置参考

Visual Studio 2022 NUGET NU1301 无法加载源 基础连接已关闭:无法建立SSL / TLS安全通道的信任关系;根据验证过程,远程证书无效,参考文章:https://blog.csdn.net/hefeng_aspnet/article/details/145780081 NuGet 行为…

同价位usb网卡与pcie网卡网速差距实测 热点测试

选用两款价位在75上下的网卡 2.4G usb: 2.4G pcie网卡: 5G PCIE 5G USB

DVWA -第二关-命令执行

这里是个ping命令的提交框 我们在输入ping命令的时候,同时执行其他命令操作 low 输入127.0.0.||ipconfig 消除乱码的方法:修改dvwaPage.inc.php文件中的”charsetutf-8”,修改”charsetGB2312” 可以显示出来,初级没有过滤 m…

类和对象——const修饰的类的对象和函数

const修饰的类的对象和函数 const成员函数和const对象1 const成员函数2 调用关系3 const在成员函数中的位置4 取地址&及const取地址操作符重载 const成员函数和const对象 1 const成员函数 将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数&…

【DeepSeek-R1背后的技术】系列十三:归一化方式介绍(BatchNorm, LayerNorm, Instance Norm 和 GroupNorm)

【DeepSeek-R1背后的技术】系列博文: 第1篇:混合专家模型(MoE) 第2篇:大模型知识蒸馏(Knowledge Distillation) 第3篇:强化学习(Reinforcement Learning, RL)…

计算机毕设-基于springboot的融合多源高校画像数据与协同过滤算法的高考择校推荐系统的设计与实现(附源码+lw+ppt+开题报告)

博主介绍:✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围:Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…