8.作用域与函数

1.局部变量与全局变量:
局部:在函数体或局部范围内声明的变量称为局部变量,仅在局部作用域内有效.
全局:在函数之外或全局范围内声明的变量,允许在函数内部和外部访问.不允许在函数内部修改.
2.global:用于在函数内部访问和修改全局作用域中的变量,通过在函数内部使用global关键字声明变量,该变量就可以在函数内部被修改,并且修改后的值也会影响到全局作用域中的变量.

def func():a = 1000print("内部",a)a = 200
func()
print('外部', a)

global

a = 10def func():global aa = 20print(a)
func()
print(a)

3.nonlocal:用于在嵌套函数中修改嵌套作用域外的变量,它允许你在内部函数中访问并修改外部函数的局部变量,不是创建一个新的同名局部变量,并且会影响到外部函数中的同名变量.这样可以实现在嵌套函数中共享和修改变量的目的

def outer():x = 'local'def inner():nonlocal xx = 'nonnlocal'print('inner', x)inner()print('outer', x)x = 'global'
outer()
print('global', x)

4.函数参数的传递
强制位置参数func(a, b, /):
强制关键字参数:func(a, *, b) *后面的强制使用关键字参数
位置参数:调用函数时根据函数定义的参数的位置来传递参数.
关键字参数: 函数调用通过key=value的形式来传递参数, 可以让函数更加的清晰, 同时也不需要强调顺序.
缺省参数:也叫做默认参数, 用于在定义函数的时候为参数提供默认值, 调用函数时可以不传递该参数的值, 所有的位置参数必须出现在默认参数前, 包括函数定义和调用.
不定长参数:不定长参数: 也叫做可变参数, 用于不确定调用的时候会传递多少参数.二者可以混用
func(*args,**kwargs):
*args 位置传递,会以元组存储被args接收
**kwargs,关键字传递,在参数是key=value的情况下, 所有的key-value都会被kwargs接收, 同时会将key-value组成一个字典.

def self_introduction(*args,**kwargs):print(args)print(kwargs)print(f"你好, 我的名字叫{args[0]}, 今年{kwargs['age']}岁, 我来自{kwargs['come_from']}")a = self_introduction('王五', age=18,come_from='广西')
print(a)

5.值传递和引用传递
值传递将实际参数复制一份给形参,不影响实际参数的值.
引用传递,将实际参数的引用地址传递给形式参数,形式参数和时间参数指向同一内存地址,函数中对形式参数的修改会影响到实际参数.
对于可变对象(列表,字典),传递方式是引用传递,因为他们的值可以在函数内部进行修改,对于不可变对象(数字,字符串),传递方式是值传递,函数内部对形式参数的修改不会影响到实际参数.

def f(a, b=[]):for i in range(a):b.append(i)print(b)f(6)
f(7)
f(7,b = [1,2])

lst = lst+5 会创建一个新的 += 则是在原来上面进行操作
把函数作为参数传递
不能传函数的调用,要传引用:

def sorted_by(num):num_string = str(num)[-1]return int(num_string)a_list = [12123, 1651 , 16564, 48646]
b_list= sorted(a_list, key=sorted_by)
print(b_list)

6.匿名函数
用于创建一次性的,简单的函数

def add(a, b):return a + bc = lambda a, b: a+bprint(c(1,2))

lambda a, b: a+b

numbers = [5, 8, 9, 4]
a_list = sorted(numbers, key=lambda x:x %3)
print(a_list)

7.常用内置函数
zip打包,返回一个可迭代的对象,该对象生成元组
from itertools import zip_longest
来补充
如果长短不一样,会自动与最短的相配

a_list = [1, 2, 3]
string_list = ['1', '2', '3']
c_list = ['a', 'b', 'c']zipeed = zip(a_list,string_list,c_list)
print(list(zipeed))

map(function, iterable)
前面是方法函数,

def square(x):return x ** 2numbers = [1,2, 3, 4]
square_numbers = map(square, numbers)
print(list(square_numbers))

filter(function, iterable)对可迭代元素进行过滤
函数是过滤后的

numbers = [1,2, 3, 4]
def is_even(x):return x %2 == 0even_numbers = filter(is_even, numbers)
print(list(even_numbers))

all(iterable)判断可迭代对象中所有元素是否都为真.
如果为真返回True,否则False,空的话也返回True

numbers = [1, 2, 3, 4, 5]
sign = all(num > 0 for num in numbers )
print(sign)

any(iterable)
判断可迭代对象中的任何一个元素是否为真,不是返回False
有一个为True返回True,如果是空的会返回False

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

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

相关文章

沉淀强化镍基合金660大螺丝的物理性能

沉淀强化镍基合金660大螺丝,是一种高性能的工程材料,其在极端环境中展现了优异的稳定性和耐用性。以下,我们将深入解析其主要的物理性能。 首先,该合金螺丝的密度为7.99g/cm,这意味着它具有较高的质量密度,…

MethodArgumentNotValidException

MethodArgumentNotValidException 是 Spring 框架中用于处理方法参数验证失败时抛出的异常。通常在使用 Spring MVC 或 Spring Boot 时,当请求体中的数据未通过验证注解(如 NotNull, Size, Min, Max 等)的检查时,会抛出此异常。 …

lodash _.template()方法的使用

背景&#xff1a; 使用_.template()生成对应数据的对应html代码 核心代码&#xff1a; //定义一个变量来装finalHtml var finalHtml //1.模版 compiled _.template([<span class"${clazz}" index"${index}" style"bac…

APM Profile 在系统可观测体系中的应用

引言 应用程序性能分析&#xff08;Application Performance Management&#xff0c;APM&#xff09;是一个广泛的概念&#xff0c;涉及应用程序运行时各种性能指标的监测、诊断和优化。在可观测体系建设中&#xff0c;APM 是保障系统业务运行性能的关键技术&#xff0c;确保用…

Tomcat WEB站点部署

目录 1、使用war包部署web站点 2、自定义默认网站目录 3、部署开源站点&#xff08;jspgou商城&#xff09; 对主机192.168.226.22操作 对主机192.168.226.20操作 上线的代码有两种方式&#xff1a; 第一种方式是直接将程序目录放在webapps目录下面&#xff0c;这种方式…

多协议网关BL110钡铼6路RS485转MQTT协议云网关

在工业自动化的现代化进程中&#xff0c;物联网技术的应用日益广泛&#xff0c;特别是工业物联网网关作为连接传感器、控制器和云端平台的关键枢纽&#xff0c;发挥着至关重要的作用。BL110钡铼多协议网关作为一款专为工业环境设计的先进设备&#xff0c;不仅支持多种下行采集协…

【Vue.js】 Mixin 局部混入与全局混入的介绍和使用总结以及优缺点分析

1. Vue.js Mixin 概述 1.1 Mixin 的定义与作用 Mixin 在 Vue.js 中是一种灵活的组件复用机制。它允许我们将多个组件之间的共通功能抽象出来&#xff0c;形成一个混入对象。这样&#xff0c;我们就可以避免在多个组件中重复编写相同的代码&#xff0c;提高代码的复用性和可维…

【代码随想录】【算法训练营】【第51天】 [115]不同的子序列 [583]两个字符串的删除操作 [72]编辑距离

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day 51&#xff0c;周四&#xff0c;又是不能坚持的一天~ 题目详情 [115] 不同的子序列 题目描述 115 不同的子序列 解题思路 前提&#xff1a; 思路&#xff1a; 重点&#xff1a; 代码实现 …

【chatgpt】利用遗传编程(GP)生成编译原理代码

利用遗传编程&#xff08;GP&#xff09;生成编译原理代码是一种自动化编程技术&#xff0c;通过进化算法寻找解决特定问题的最优代码。以下是如何利用GP生成编译原理代码的示例步骤&#xff1a; 1. 定义问题 确定需要解决的编译原理问题&#xff0c;如词法分析器、语法分析器…

windows下修改Jar包内容的两种方式

windows下修改Jar包内容的两种方式 背景第一种&#xff1a;解压工具第二种&#xff1a;Jar命令附Jar命令用法基本用法常见选项示例1&#xff1a;创建一个简单的 JAR 文件示例2&#xff1a;创建包含清单文件的 JAR 文件示例3&#xff1a;列出 JAR 文件的内容示例4&#xff1a;提…

数据库物理结构设计-定义数据库模式结构(概念模式、用户外模式、内模式)、定义数据库、物理结构设计策略

一、引言 如何基于具体的DBMS产品&#xff0c;为数据库逻辑结构设计的结果&#xff0c;即关系数据库模式&#xff0c;制定适合应用要求的物理结构 1、在设计数据库物理结构前&#xff0c;数据库设计人员首先 要充分了解所用的DBMS产品的功能、性能和特点&#xff0c;包括提供…

【Unity】数据持久化--PlayerPrefs

1、PlayerPrefs是什么 是unity提供的可以用于存储读取玩家数据的公共类 2、存储相关 2.1 PlayerPrefs的数据存储类似于键值对存储一个键对应一个值 提供了存储3种数据的方法int float string 键: string类型 值: int float string对应3种API PlayerPrefs.SetInt("myAge…

慧科新闻搜索研究数据库的使用指南及个人获取途径

《慧科新闻搜索研究数据库》WiseSearch由慧科讯业有限公司出品。WiseSearch是具有新闻搜索/浏览、对比分析等功能的一站式新闻搜索平台&#xff1b;内容包括1200种报刊和8000 网站的新闻资讯&#xff0c;平面媒体涵盖全国综合大报、党委机关报、都市报、行业报刊媒体&#xff0…

算法08 广/宽度优先搜索及相关问题详解

这是《C算法宝典》算法篇的第08节文章啦~ 如果你之前没有太多C基础&#xff0c;请点击&#x1f449;专栏&#xff1a;C语法入门&#xff0c;如果你C语法基础已经炉火纯青&#xff0c;则可以进阶算法&#x1f449;专栏&#xff1a;算法知识和数据结构&#x1f449;专栏&#xff…

数据结构与算法高频面试题

初级面试题及详细解答 当涉及到数据结构与算法的初级面试题时&#xff0c;通常涉及基本的数据结构操作、算法复杂度分析和基本算法的应用。 1. 什么是数组&#xff1f;数组和链表有什么区别&#xff1f; 解答&#xff1a; 数组&#xff1a;是一种线性数据结构&#xff0c;用…

SKYDROID-C12—— 让美景近在眼前

C12是一款小型高清双光吊舱&#xff0c;使用新一代影像芯片&#xff0c;搭配高清无畸变摄像头&#xff0c;有效像素达到500万&#xff0c;拥有强悍的2K视频录制和拍照能力&#xff0c;支持数字变倍&#xff0c;随时随地捕捉清晰的图像&#xff0c;让远处美景近在眼前。

mysql 提取拼音时一个重复字导致的错误

在提取拼音时&#xff0c;一直报错&#xff0c;提示&#xff1a;Result consisted of more than one row 最后发现是礼这个字导致的&#xff0c;发现有两个写法不同&#xff0c;但是mysql识别为同一个字导致的

el-upload+python fastAPI实现上传文件

el-upload通过action指定后端接口&#xff0c;并通过name指定传输的文件包裹在什么变量名中 <el-uploadclass"upload-demo"dragaction"https://ai.zscampus.com/toy/upload"multiplename"fileList":limit"10"accept".xlsx, .x…

力扣每日一题:2734. 执行子串操作后的字典序最小字符串

题目链接 脑子比较笨&#xff0c;分三种情况考虑&#xff1a; 以a开头。xxa&#xff0c;a在中间。 对于情况2还有两种可能&#xff1a; 1. 全是a&#xff0c;最后一个元素需要替换成z&#xff0c;因为必须执行一次操作。 2. aaaxxa&#xff0c;中间有一段非a&#xff0c;将这…

高中数学:不等式-常见题型解题技巧

一、“1”的代换 练习 例题1 例题2 解 二、基本不等式中的“变形” 就是&#xff0c;一般情况下&#xff0c;我们在题目中&#xff0c;是不能够直接使用基本不等式进行求解的。 而是要对条件等式进行变形&#xff0c;满足基本不等式的使用条件 练习 例题1 解析 两边同…