当前位置: 首页 > news >正文

怎样把自己做的网站发布/电商网店

怎样把自己做的网站发布,电商网店,无极电影网评,centos 7安装wordpress[Python学习日记-32] Python 中的函数的返回值与作用域 简介 返回值 作用域 简介 在函数的介绍中我们提到了函数的返回值,当时只是做了简单的介绍,下面我们将会进行详细的介绍和演示,同时也会讲一下 Python 中的作用域,作用域分…

[Python学习日记-32] Python 中的函数的返回值与作用域

简介

返回值

作用域

简介

        在函数的介绍中我们提到了函数的返回值,当时只是做了简单的介绍,下面我们将会进行详细的介绍和演示,同时也会讲一下 Python 中的作用域,作用域分为全局和局部,这也会在下面进行详细讲解和演示。

返回值

        函数外部的代码要想获取函数的执行结果,就可以在函数里用 return 语句把结果返回,代码如下

def stu_register(name, age, course='PY', country='CN'):print("------注册学生信息------")print("姓名:", name)print("age:", age)print("国籍:", country)print("课程:", course)if age > 22:return Falseelse:return Trueregistriation_status = stu_register('王老五',22,course='Python日记',country='JP')if registriation_status:print("注册成功")
else:print("年龄过大")

代码输出如下:

当函数具有多个结果是则需要 return 多个值,代码如下

def stu_register(name, age, course='PY', country='CN'):print("------注册学生信息------")print("姓名:", name)print("age:", age)print("国籍:", country)print("课程:", course)if age > 22:return False,"年龄过大"else:return True,"注册成功"registriation_status,str = stu_register('王老五',22,course='Python日记',country='JP')if registriation_status:print(str)
else:print(str)

代码输出如下:

注意:

  • 函数在执行过程中只要遇到 return 语句,就会停止执行并返回结果,所以也可以理解为 return 语句代表着函数的结束
  • 如果未在函数中指定 return,那这个函数的返回值为 None

作用域

一、全局与局部变量

        函数中的作用域指的是变量的可访问范围。在函数内部定义的变量是局部变量,只能在函数内部被访问。在函数外部定义的变量是全局变量,可以在函数内部和外部被访问。代码如下

name = "Jove"def change_name():name = "浩南哥"    # 局部变量,在这里相当于赋值了新的变量,只在函数里面有效print("after change:",name," id:",id(name)) # 这里 print(name) 会先去找局部内存里的 name,如果没有才会去找全局内存里的 namechange_name()print("在外面看看 name 改了没有:",name," id:",id(name))

代码输出如下:

        在函数内部修改了 name 的值后,在外面 print() 的时候却没有修改,这是因为这两个 name 根本不是一回事,在上面的输出就可以看出函数内的内存地址和函数外面的内存地址是不一样的,局部变量和全局变量的注意事项如下

  • 在函数中定义的变量称之为局部变量,在程序的一开始定义的变量称为全局变量;上面的代码中函数内的 name 称之为局部变量,外面的 name 称之为全局变量;
  • 全局变量作用域(即有效范围)是整个程序,局部变量作用域是定义该变量的函数;
  • 变量的查找顺序是局部变量 > 全局变量
  • 当全局变量与局部变量同名时,在定义局部变量的函数内,局部变量起作用;在其它地方全局变量起作用;
  • 在函数里是不能直接修改全局变量的。

        若是想在函数内修改全局变量那应该怎么修改呢?代码如下

name = "Jove"def change_name():global name    # 在函数内部声明(创建)一个全局变量,如果全局变量在外面已经有了,更像是指向到外面的全局变量的内存地址name = "浩南哥"    # 这里调用的就是前面声明了的全局变量 name 了print("after change:",name," id:",id(name))change_name()print("在外面看看 name 改了没有:",name," id:",id(name))

代码输出如下:

 

        global name 的作用就是要在函数里声明(创建)全局变量 name,意味着最上面的 name="Jove" 即使不写,程序最后面的 print() 也可以打印 name。

        值得注意的是,如果函数内声明了全局变量 name(global name)那 name = "浩南哥" 一定不能先于 global name,因为在你运行这段 Python 代码时,Python 解析器会先把这段代码读一遍,选出那些是局部变量,那些是全局变量,如果 name = "浩南哥" 先于 global name 那解析器会认为 name 既是局部变量也是全局变量,那就会出现如下报错信息

SyntaxError: name 'name' is assigned to before global declaration

 

二、传递列表、字典、集合产生的现象

d = {"name":"Jove","age":26,"hobbie":"大保健"}    # 输出1841217292608
l = ["Rebeeca","Katrina","Rachel"]      # 输出1841215033728def change_data(staff_table,girls):    # 这里 staff_table 和 girls 只是传递了字典和列表的内存地址进来,并没有像字符串那样在局部内存当中声明(创建)了新的变量# 如果在函数当中创建了 dict,list 到函数结束时还是会销毁的# 如果当函数当中出现了与全局变量同名的局部变量,那样会优先选择局部变量# 在函数当中需要修改这个同名的变量,那样就要先声明这个临时变量,再操作,不然就会报错print("传入函数中 d 的内存地址:",id(staff_table))    # 输出1841217292608print("传入函数中 l 的内存地址:", id(girls))  # 输出1841215033728staff_table["hobbie"] = "学习"girls.append("XiaoYun")change_data(d,l)
print("d:",d," ——> ",id(d),"\nl:",l," ——> ",id(l))    # 整个过程 d 和 l 的内存地址都没有发生过改变

代码输出如下:

        可以看到代码输出当中 d 和 l 都已经发生了改变,这个怎么和前面我们得到的结果有这么大偏差呢?不是说不能在函数里改全局变量么,这里怎么改了呀?看了下面这张图你就明白了

        根据上图我们能看出,程序只是把 d 这个 dict 的内存地址传给了 change_data 函数,把 dict 比作鱼缸,里面的 key 和 value 比作缸里装的鱼。现在只是把鱼缸丢给了函数,这个鱼缸本身你不能改,但是里面的鱼可以。相当于只是传了一个对这个 d 的引用关系给到函数的形参。这样是为了减少内存的浪费,因为如果这个 dict 比较大,传一次到函数里就要复制一份新的值的话,效率低不单止还极度浪费资源。 

相关文章:

[Python学习日记-32] Python 中的函数的返回值与作用域

[Python学习日记-32] Python 中的函数的返回值与作用域 简介 返回值 作用域 简介 在函数的介绍中我们提到了函数的返回值,当时只是做了简单的介绍,下面我们将会进行详细的介绍和演示,同时也会讲一下 Python 中的作用域,作用域分…...

儿童发光耳勺值得买吗?儿童发光耳勺最建议买的五个牌子!

儿童耳部清洁需谨慎,发光耳勺能在光线不足时提供照明,便于看清耳道。但不同产品质量参差不齐,选择时需综合考虑安全性、实用性等因素,为孩子的耳部健康做出正确选择! 这里给大家总结了全新的儿童发光耳勺的避雷指南&am…...

TIPS 二进制程序暴露符号给动态链接库使用

背景 在支持插件/扩展的C/C系统中,通常会支持在程序运行时加载动态链接库。这时二进制程序会提供一些函数/接口让动态链接库调用,但是这些函数在二进制程序中又不会使用,导致在编译时编译器直接把这些符号删除了,加载链接库就会由…...

【分布式微服务云原生】8分钟掌握微服务通信的艺术:Dubbo与OpenFeign全面解析

摘要: 在构建微服务架构时,服务间的通信机制是核心要素之一。Dubbo和OpenFeign是两个非常流行的服务调用框架,它们各有千秋,适用于不同的场景。本文将深入探讨Dubbo和OpenFeign的主要特点、使用场景以及它们之间的差异&#xff0c…...

sicp每日一题[2.33]

Exercise 2.33 Fill in the missing expressions to complete the following definitions of some basic list-manipulation operations as accumulations: ; p 表示一个函数,sequence 表示一个列表 ; 这个函数将对列表中每一个元素进行 p 操作 (define (map p sequ…...

【Mybatis】常见面试题汇总 共56题

文章目录 1. 介绍下MyBatis?2. MyBatis 框架的应用场景?3. MyBatis 有哪些优点?4. MyBatis 有哪些缺点?5. MyBatis 用到了哪些设计模式?6. MyBatis常用注解有哪些?7. MyBatis 有哪些核心组件?8. MyBatis编程步骤是什么样的?9. MyBatis 和…...

每天一道面试题(17):服务网格学习笔记

什么是服务网格? 服务网格(Service Mesh)是处理微服务间通信的一种基础设施层。它主要用于解耦服务间的通信与业务逻辑,使开发者可以专注于业务实现。服务网格在微服务架构的演进中扮演了重要角色,特别是在解决服务间…...

【nrm】npm 注册表管理器

nrm是什么 nrm(NPM Registry Manager)是一个用于管理 Node.js 包管理器(如 npm 和 Yarn)的注册表工具。它可以帮助用户快速切换不同的 npm 源,以便于提高包安装的速度和效率,特别是在中国大陆地区&#xf…...

解压短视频素材资源网站推荐

如果你正在寻找解压短视频素材,那么这篇文章正是为你而写!以下是一些热门的网站,帮助你轻松找到所需的素材,快来看看吧! 蛙学网 蛙学网是国内领先的视频素材网站,提供丰富的解压视频素材。无论是放松心情的…...

Qemu开发ARM篇-6、emmc/SD卡AB分区镜像制作并通过uboot进行挂载启动

文章目录 1、AB分区镜像制作2、uboot修改3、镜像启动 在上一篇 Qemu开发ARM篇-5、buildroot制作根文件系统并挂载启动中,我们通过buildroot制作了根文件系统,并通过 SD卡的形式将其挂载到设备并成功进行了启动,但上一章中,我们的…...

Spring Boot中使用ThreadPoolTaskScheduler实现轻量级多线程定时任务

引言 在Java开发中,Spring Boot提供了多种方式来执行定时任务,如Scheduled注解和TaskScheduler。当需要执行多线程定时任务时,ThreadPoolTaskScheduler是一个轻量级的解决方案。本文将通过一个具体的业务场景,介绍如何使用Thread…...

完全二叉树的节点个数 C++ 简单问题

完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。 示例 1&#xff…...

每日一题学习笔记

给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1: 输入&#…...

从事人工智能学习Python还是学习C++?

人工智能(Artificial Intelligence,简称AI)是当今科技领域最热门的研究方向之一。AI 涉及多个学科和技术,特别是机器学习、神经网络、深度学习等技术的应用。在AI的开发过程中,编程语言的选择对于开发效率和项目实现至…...

博客摘录「 CNN中的感受野和有效感受野会对模型产生怎样的影响?」2024年9月29日

,中心像素受影响较大,离中心越远梯度信号越弱。梯度信号的衰减是指数级的,这意味着应用于感受野的大多数像素的梯度将是可忽略的(如果有的话)。 有效感受野的定义...

AURIX单片机示例:开发入门与点亮LED

文章目录 目的模板工程Blinky_LED示例链接总结 目的 这个例程比较简单,主要通过这个例程来介绍 AURIX™ Development Studio(ADS) 和 iLLD 库来开发 AURIX 系列单片机一些入门的内容。一些更为基础的资料等内容可以参考下面文章: 《英飞凌 AURIX TriCo…...

MySQL字符串函数与操作

在编程领域中,字符串操作是数据处理中至关重要的一部分。无论是文本分析、日志处理,还是格式化输出,字符串的操作技能都能极大提高工作效率。在 Python 中,字符串相关的函数和方法为开发者提供了强大的工具,帮助完成各种任务。了解如何灵活运用这些工具,能够有效提升编程…...

HTML+CSS 水滴登录页

文章目录 一、效果演示二、Code1.HTML2.CSS 三、实现思路拆分 一、效果演示 实现了一个水滴登录页的效果。页面包含一个水滴形状的登录框和两个按钮,登录框包括用户名、密码和登录按钮,按钮分别为忘记密码和注册。整个页面的设计非常有创意,采…...

基于Next.js和TailwindCss的TailwindCss

最近在研究 Next.js 和 TailwindCss ,这两天没事的时候就搞了一个 c。 目前工具部署在 Vercel ,欢迎各位体验(能提出意见更好嘿嘿) 体验地址: https://icon.999872.xyz/ 图片预览 👇...

若依开源系统多数据源整合clickhouse数据库详细步骤

1.添加依赖【pom.xml文件】 <!-- clickhouse数据源依赖--><dependency><groupId>ru.yandex.clickhouse</groupId>...

Subdominator:一款针对漏洞奖励计划的子域名安全枚举工具

关于Subdominator Subdominator是一款针对漏洞奖励计划的子域名安全枚举工具&#xff0c;可用于在漏洞搜寻和侦察过程中进行被动子域名枚举。它旨在通过高效枚举子域名和各种免费被动资源来帮助研究人员和网络安全专业人员发现潜在的安全漏洞。 Subdominator 与各种免费和付费…...

[leetcode]516_最长回文子序列

给你一个字符串 s &#xff0c;找出其中最长的回文子序列&#xff0c;并返回该序列的长度。 子序列定义为&#xff1a;不改变剩余字符顺序的情况下&#xff0c;删除某些字符或者不删除任何字符形成的一个序列。示例 1&#xff1a; 输入&#xff1a;s "bbbab" 输出&a…...

电子相册|智能化电子相册|基于java的电子相册管理系统设计与实现(源码+数据库+文档)

电子相册管理系统 目录 基于java的电子相册管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕设布道师&…...

linux项目_c语言:Makefile编写、动态库生成、添加动态库路径

一直想搞懂Linux中Makefile是怎么管理项目的&#xff0c;知识积累到一定程度后&#xff0c;我就做了一个自己的缩小项目去把剩下的细节搞清楚 代码&#xff1a; Service.c: #include <stdio.h> #include "lib_sevr.h" int main(){printf("输入a, b的值…...

Python学习(1):字典、DataFrame的创建方法

1. 字典的创建方法 1.1 直接创建 # 创建一个包含姓名和年龄的字典 person {"name": "Alice", "age": 25}print(person) # 输出&#xff1a;{name: Alice, age: 25} 1.2 使用 dict() 函数 # 使用键值对列表创建字典 person dict(name"…...

async await 介绍 从0手动实现async await

1 async await介绍 async 和 await 是用于处理异步编程的语法糖&#xff0c;它们简化了异步操作的编写&#xff0c;使其看起来像同步代码。通过 async 标记一个函数为异步函数&#xff0c;返回的是一个 Promise 对象&#xff0c;而 await 用来暂停执行&#xff0c;直到 Promise…...

UDP校验和计算及网络中的校验和机制

UDP (User Datagram Protocol) 是一种无连接的传输层协议&#xff0c;它不像 TCP 那样提供可靠的传输保证。虽然 UDP 不保证数据可靠性&#xff0c;但它仍然提供了一个可选的校验和机制来检测数据在传输过程中出现的错误。 理解UDP校验和的计算过程和其在网络中的作用至关重要。…...

如何使用C语言接入Doris数据库

如何使用C语言接入Doris数据库 一、环境准备1. 安装MySQL C API2. Doris数据库环境二、编写C语言接入代码1. 包含必要的头文件2. 编写连接和查询函数3. 编译和运行程序三、注意事项1. 安全性2. 错误处理3. 性能优化4. 兼容性5. 调试和日志记录四、结论Doris(之前称为Palo或Apa…...

DarkLabel 2.4 目标追标注工具介绍

DarkLabel介绍 https://github.com/darkpgmr/DarkLabel 官方地址 视频/图像标注工具&#xff0c;很适合用于目标追踪任务 DarkLabel可以在视频和图像中标注物体的边界框&#xff0c;并附上 ID 和name。还可以用于裁剪视频、从视频中采样训练图像以及对图像区域进行马赛克处理…...

uniapp设置从右上角到左下角的三种渐变颜色

推荐学习文档 golang应用级os框架&#xff0c;欢迎stargolang应用级os框架使用案例&#xff0c;欢迎star案例&#xff1a;基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识&#xff0c;这里有免费的golang学习笔…...