首页 > 编程语言 >Python-3.10.5学习笔记

Python-3.10.5学习笔记

时间:2023-09-01 14:13:17浏览次数:50  
标签:Python global 笔记 3.10 num 参数 nonlocal 模块 dict

 

Linux系统-部署-运维系列导航

pip源初始化

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set install.trusted-host pypi.tuna.tsinghua.edu.cn

 

VSCode插件安装

  • 语法检查 flake8
  • 代码格式化 yapf
  • 文件及文件夹图标 vscode-icons

 

用户配置

#launch.json 启动配置,F5直接运行
"stopOnEntry": false

#settings.json 用户配置,启用插件,保存自动代码检查和格式化
{
    "terminal.integrated.sendKeybindingsToShell": true,
    "window.zoomLevel": 1,
    "git.ignoreMissingGitWarning": true,
    "python.formatting.provider": "yapf",
    "python.linting.flake8Enabled": true,
    "python.linting.lintOnSave": true,
    "editor.formatOnSave": true,
    "workbench.colorTheme": "Quiet Light",
    "python.linting.flake8Args": [
        "--max-line-length=256"
    ],
    "explorer.confirmDelete": false,
    "[python]": {
        "editor.formatOnType": true
    }
}

 

函数,参数,调用

#此为代码规范示例代码,实际使用中有些参数无法同时使用
def func(arg1, agr2, /, arg3, arg4, *, arg5, arg6, arg7=0, *tuplearg, **dictarg):
    pass
函数定义与调用时,参数传递分为以下类型
  1. 位置参数,只能按照参数定义的顺序传递
  2. 关键字参数,按照 参数名称=参数值 方式,不区分参数定义的顺序
  3. 默认参数,函数定义时指定参数的默认值,但默认参数必须在参数列表最后面,但需要在 不定长参数 之前
  4. 不定长参数,或包裹参数,或包装参数,将调用时多个值合并为一个值,只能定义在参数列表最后面
    1. 包裹元组参数,定义为参数名前加一个星号,如上tuplearg,只能定义一次,且需要在包裹字典参数之前,调用时将多个值(没有明确参数名的)合并为元组使用
    2. 包裹字典参数,定义为参数名前加两个星号,如上dictarg,只能定义一次,且需要在包裹元组参数之后,调用时将多个键值对(没有明确参数名的)合并为字典使用
特别关注
  1. 参数列表中“/”符号,表示之前的参数为位置参数
  2. 参数列表中“*”符号,表示之后的参数为关键字参数,一般为有默认值的参数
  3. “*”符号与 不定长参数 同时定义时,只能在最后面定义包裹字典参数 **dictarg
如上定义,各参数特性如下
  • arg1、arg2只能通过位置传递
  • arg3,arg4可以通过位置 或 关键字传递
  • arg5,arg6,arg7只能通过关键字传递,其中arg7有默认值,可以不传递
  • 其他非键值对形式的参数,统一合并到元组 tuplearg 中
  • 其他键值对形式的参数,统一合并到字典 dictarg 中

 

dict 字典定义方式

以下面字典内容为例
{
    "a":1,
    "b":2
}

 

1.直接变量赋值

dict1={ "a":1, "b":2}

 

2.dict构造函数传递键值对赋值

#class dict(**kwarg)
dict2=dict(a=1,b=2)

 

3.dict构造函数传递键值对(元组)列表

#class dict(iterable, **kwarg)
dict3=dict([("a",1), ("b",2)])

 

4.dict构造函数传递映射

#class dict(mapping, **kwarg)
dict4=dict(zip(["a","b"], [1,2]))

 

import 与 from import

  1. 包=文件夹,模块=文件,对象=类、方法、模块内对象
  2. import只能导入包、模块,from import可以导入包、模块、对象
  3. import执行多次也只会导入一次,导入后使用的是原来模块内的模块内对象,不会与当前模块的对象重名覆盖,from import执行多次会重新导入,导入后会在当前模块定义新的对象,指向原来模块的模块内对象,且与当前模块对象会相互覆盖

 

open(filename, mode)

mode模式

 

 

变量与作用域

Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。 变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。Python 的作用域一共有4种,分别是: 有四种作用域:
  • L(Local):最内层,包含局部变量,比如一个函数/方法内部。
  • E(Enclosing):包含了非局部(non-local)也非全局(non-global)的变量。比如两个嵌套函数,一个函数(或类) A 里面又包含了一个函数 B ,那么对于 B 中的名称来说 A 中的作用域就为 nonlocal。
  • G(Global):当前脚本的最外层,比如当前模块的全局变量。
  • B(Built-in): 包含了内建的变量/关键字等,最后被搜索。
规则顺序: L –> E –> G –> B。 在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内置中找。

 

global 和 nonlocal关键字

当内部作用域想修改外部作用域的变量时,就要用到 global 和 nonlocal 关键字了。 注意:global与nonlocal声明,需要单独一行,不能与赋值语句同时执行,即不能 global object=value

1.global,函数内部要修改全局变量,在函数内部首先执行 global object

num = 1
def fun1():
    global num  # 需要使用 global 关键字声明
    print(num) 
    num = 123

 

2.nonlocal,函数内部想修改嵌套的外层函数变量,在函数内部首先执行 nonlocal object

def outer():
    num = 10
    def inner():
        nonlocal num   # nonlocal关键字声明
        num = 100
        print(num)
    inner()
    print(num)

 

 

标签:Python,global,笔记,3.10,num,参数,nonlocal,模块,dict
From: https://www.cnblogs.com/xiaoyaozhe/p/17671199.html

相关文章

  • 联系笔记本开启摄像头后是黑屏
    联想Y9000X,开启笔记本摄像头访问权限后,发现视频还是黑屏。设备管理器中,怀疑是不是没有“图像设备”的原因,各种找。后面发现与没有“图像设备”没关系。摄像头附近有个隐私物理开关。物理开关默认是关闭的,拨到右边是打开。小丑是自己。......
  • [读书笔记]架构设计原则
    架构设计面向的是不确定性,需要面对多种可能性时进行选择。选择的前提是知识和经验,知识是指有哪些技术、可用组件、实现思路等,这个决定了可选的范围。经验是对当前的业务、情形进行分析,能识别对当前的工作最有效的要素,能从选择空间里做出选择。多学习:扩大可选择的空间和范围多......
  • Python-嵌套数组获取对应的值
    二维数组示例:er_array=[['霹雳火','急先锋','超音速']]forinner_arrayiner_array:#嵌套二维数组,使用两个嵌套的for循环遍历数组并获取值forvalueininner_array:print(value) 方法一:使用enumerate函数,遍历获取元素的索引er_array=[['霹雳......
  • Python 深度学习目标检测评价指标
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • CentOS 8中部署CRM系统笔记
    项目下docker目录介绍wk_crm└──docker--docker部署相关文件├──conf--mysql、nacos、nginx、redis配置├──data--mysql、elasticsearch数据,mysql初始化数据脚本,elasticsearchplugins......
  • python字典的应用一(增删改查)
    #一.有如下字典内容用程序解答下面的题目dic={'python':95,'java':99,'c':100}#1.字典的长度是多少print(len(dic))#2.请修改'java'这个key对应的value值为98dic["java"]=98print(dic)#3.删除c这个keydeldic["c"]print(di......
  • 超全面的JavaWeb笔记day10<Response&Request&路径&编码>
    1、Response2、Request3、路径4、编码请求响应流程图 response1、response概述response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletResponse。在客户端发出每个请求时,服务器都会创建一个response对象,并传入给Servlet.service()方法。response对象是用来......
  • Python中while的and和or
    whileAandB:同时满足A和B条件whileAorB:满足A或B任意一条以1768.交替合并字符串官方答案为启发,以前没意识到while还可以用and和or。其实无论用什么,只要看最后的结果是True或FalseclassSolution:defmergeAlternately(self,word1:str,word2:str)->str:......
  • python f-string
    python|f-string_cuckooman的博客-CSDN博客>>>a='hello'>>>b=12.23456>>>f'{a}''hello'>>>F'{a}'#f支持大写和小写混用'hello'>>>f'{a=}'#直接以a=的形式打印......
  • Python的替换和切割
    strip()用法:.strip()是字符串方法之一,在Python中用于移除字符串开头和结尾的空白字符(包括空格、制表符\t、换行符\n等)。这个方法返回一个新的字符串,原始字符串本身不会被修改。下面是.strip()方法的用法示例:s="你好,我叫周杰伦"s1=s.strip()print(s1......