python - 函数 / 字典 / 集合
一.函数
形参和实参:
>>> def MyFirstFunction(name):
'函数定义过程中的name是叫形参'
... print('传递进来的' + name + '叫做实参,因为Ta是具体的参数值!')
print前面要加缩进tab,否则会出错。
>>> MyFirstFunction('小红')
小红
传进来的小红是实参
关键字参数:
关键字参数,用在调用函数的实参的位置,其目的就是给形参下一个定义,这样的话,python会按照关键字去索引,而不是用顺序去索引。
>>> def SaySome(name,words):
... print(name + '->' + words)
>>> SaySome('小红','小蓝')
小红->小蓝
>>> SaySome(words = '小红',name = '小蓝')
小蓝->小红
默认参数
默认参数(即形参中给定默认值,则在未给实参时会以默认值输出)
>>> def SaySome(name = 'Hadley',words = 'Great'):
... print(name + 'is' + words)
...
>>> SaySome()
HadleyisGreat
>>> SaySome('abc','def')
abcisdef
收集参数(可变参数)
>>> def test(*params):
... print('参数的长度是:',len(params))
... print('第二个参数是:',params[1])
...
>>> test(1,'abc',2,3,4,5)
参数的长度是: 6
第二个参数是: abc
函数与过程
再谈谈返回值
如果有返回值,函数则返回对应值;如果没有,则返回None。
>>> def back():
... return [1,'Hadley',0.66]
...
>>> back()
[1, 'Hadley', 0.66]
>>> def back():
... return (1,'Hadley',0.66)
...
>>> back()
(1, 'Hadley', 0.66)
>>> c = back()
>>> c[0]
1
>>> c[1]
'Hadley'
>>> c[2]
0.66
局部变量与全局变量
局部变量:在局部生效如在函数中定义的变量
全局变量:作用于整个模块。函数内若试图修改全局变量,Python会新建一个同名局部变量用于存储修改值,原全局变量的值不变。不要在函数内部去修改全局变量。
>>> def discounts(price, rate):
... final_price = price * rate
... old_price = 88 #这里试图修改全局变量
... print('修改后old_price的值是:', old_price)
... return final_price
...
>>> old_price = float(input('请输入原价:'))
请输入原价:100
>>> rate = float(input('请输入折扣率:'))
请输入折扣率:0.8
>>> new_price = discounts(old_price, rate)
修改后old_price的值是: 88
>>> print('修改后old_price的值是:', old_price)
修改后old_price的值是: 100.0
>>> print('打折后价格是:', new_price)
打折后价格是: 80.0
global可将局部变量声明为全局变量
>>> count = 5
>>> def Myfun():
... count = 10
... print(count)
...
>>> Myfun()
10
>>> print(count)
5
>>> def Myfun():
... global count
... count = 10
... print(count)
...
>>> Myfun()
10
>>> print(count)
10
内嵌函数和闭包
内嵌函数:
>>> def fun1():
... print('fun1正在被调用')
... def fun2():
... print('fun2正在被调用')
... fun1()
...
>>> fun1()
fun1正在被调用
fun1正在被调用
fun1正在被调用
fun1正在被调用
fun1正在被调用
....
>>> def fun1():
... print('fun1正在被调用')
... def fun2():
... print('fun2正在被调用')
... fun2()
...
>>> fun1()
fun1正在被调用
fun2正在被调用
闭包(closure)
>>> def funX(x):
... def funY(y):
... return x*y
... return funY
...
>>> i = funX(5)
>>> i(8)
40
>>> funX(5)(8)
40
>>> def fun1():
... x = 5
... def fun2():
... nonlocal x
... x*=x
... return x
... return fun2()
...
>>> fun1()
25
lambda表达式
lambda表达式用法。lambda表达式是匿名函数,没有名字def
lambda x : 2 * x +1
x是参数,2* x +1是表达式
返回值是函数对象
>>> def ds(x):
... return 2*x+1
...
>>> ds(5)
11
>>>
>>> lambda x : 2*x + 1
<function <lambda> at 0x0000022A95C23060>
>>> g = lambda x: 2*x + 1
>>> g(5)
11
>>> def add(x,y):
... return x+y
...
>>> add(3,4)
7
>>> lambda x,y:x+y
<function <lambda> at 0x0000022A95C23100>
>>> g = lambda x,y:x+y
>>> g(3,4)
7
递归
递归必须满足哪两个基本条件
(1)函数调用自己;
(2)函数设置了正确的返回值。
eg:•写一个求阶乘的函数
正整数阶乘指从1乘以2乘以3乘以4一直乘到所要求的数。
例如所给的数是5,则阶乘式是1×2×3×4×5,得到的积是120,所以120就是4的阶乘。
假设我们n的值传入是5,那么:
>>> def factorial(n):
... if n==1:
... return 1
... else:
... return n*factorial(n-1)
...
>>> nember = int(input('请输入一个正整数:'))
请输入一个正整数:5
>>> result = factorial(nember)
>>> print(result)
120
二.字典
fromkey()方法用于创建并返回一个新的字典。它有两个参数,第一个参数是字典的键;第二个参数是可选的,是传入键的值。如果不提供,默认是None
>>> dict1 = {}
>>> dict1.fromkeys((1,2,3))
{1: None, 2: None, 3: None}
>>> dict2 = {}
>>> dict2.fromkeys((1,2,3),"Number")
{1: 'Number', 2: 'Number', 3: 'Number'}
>>> dict3 = {}
>>> dict3.fromkeys((1,2,3),('one','two','three'))
{1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three')}
访问字典的方法有key()、values()和items()
key()用于返回字典中的键,value()用于返回字典中所有的值,item()当然就是返回字典中所有的键值对(也就是项)
>>> dict1 = dict1.fromkeys(range(5),'好')
>>> dict1.keys()
dict_keys([0, 1, 2, 3, 4])
>>> dict1.values()
dict_values(['好', '好', '好', '好', '好'])
>>> dict1.items()
dict_items([(0, '好'), (1, '好'), (2, '好'), (3, '好'), (4, '好')])
get()方法提供了更宽松的方式去访问字典项,当键不存在的时候,get()方法并不会报错,只是默默第返回一个None,表示啥都没找到:
>>> dict1.get(10)
>>> dict1.get(4)
'好'
如果希望找不到数据时返回指定的值,可以在第二个参数设置对应的默认返回值:
>>> dict1.get(32,'木有')
'木有'
如果不知道一个键是否在字典中,可以使用成员资格操作符(in 或 not in)来判断
>>> 31 in dict1
False
>>> 4 in dict1
True
clear()可清空一个字典
>>> dict1
{0: '好', 1: '好', 2: '好', 3: '好', 4: '好'}
>>> dict1.clear()
>>> dict1
{}
copy()方法是复制字典(全拷贝)
>>> a = {1:'one',2:'two',3:'three'}
>>> b = a.copy()
>>> id(a)
2460458286784
>>> id(b)
2460455583296
>>> a[1] = 'four'
>>> a
{1: 'four', 2: 'two', 3: 'three'}
>>> b
{1: 'one', 2: 'two', 3: 'three'}
pop()是给定键弹出对应的值,popitem()是随机弹出一个项
>>> a
{1: 'four', 2: 'two', 3: 'three'}
>>> a.pop(1)
'four'
>>> a.popitem()
(3, 'three')
>>> a.popitem()
(2, 'two')
setdefault()方法与get()方法相似,但setdefault()在字典中找不到相应的键值时会自动添加
>>> a = {1:'one',2:'two',3:'three'}
>>> a.setdefault(2)
'two'
>>> a.setdefault(3)
'three'
update()方法可以更新字典
>>> a = {1:'one','小白':None}
>>> b = {'小白':'狗'}
>>> a.update(b)
>>> a
{1: 'one', '小白': '狗'}
三.集合
字典的表亲--集合(在python3中,如果用大括号括起一堆数字但没有体现映射关系,那么就会认为这堆玩意儿就是个集合)
>>> num1 = {}
>>> type(num1)
<class 'dict'>
>>> num2 = {1,2,3}
>>> type(num2)
<class 'set'>
集合中的元素都是唯一的(集合会自动帮我们把重复的数据清理掉,集合是无序的,所以不能试图去索引集合中的某一个元素)
>>> num = {1,2,3,3,4,5}
>>> num
{1, 2, 3, 4, 5}
如何创建一个集合有两种方法:1、直接把一堆元素用大括号括起来;2、用set()
1、直接把一堆元素用大括号括起来
>>> set1 = {'小红','小蓝','小绿'}
2、用set()
>>> set1 = {'小红','小蓝','小绿'}
>>> set2 = set(['小红','小蓝','小绿'])
>>> set1 == set2
True
相关文章:
python - 函数 / 字典 / 集合
一.函数 形参和实参: >>> def MyFirstFunction(name): 函数定义过程中的name是叫形参 ... print(传递进来的 name 叫做实参,因为Ta是具体的参数值!) print前面要加缩进tab,否则会出错。 >>> MyFirstFun…...
connect to github中personal access token生成token方法
一、问题 执行git push时弹出以下提示框 二、解决方法 去github官网生成Token,步骤如下 选择要授予此 令牌token 的 范围 或 权限 要使用 token 从命令行访问仓库,请选择 repo 。 要使用 token 从命令行删除仓库,请选择 delete_repo 其他根…...
Appium启动APP时报错Security exception: Permission Denial
报错内容Security exception: Permission Denial: starting Intent 直接通过am命令尝试也是同样的报错 查阅资料了解到:android:exported | App quality | Android Developers exported属性默认false,所以android:exported"false"修改为t…...
ubuntu22 使用ufw防火墙
专栏总目录 一、安装 sudo apt update sudo apt install ufw 二、启动防火墙 (一)启动命令 sudo ufw enable (二)重启命令 sudo ufw reload 三、配置规则 #允许SSH连接 sudo ufw allow ssh #如果sshd服务端口指定到了8888&a…...
初识STM32:开发方式及环境
STM32的编程模型 假如使用C语言的方式写了一段程序,这段程序首先会被烧录到芯片当中(Flash存储器中),Flash存储器中的程序会逐条的进入CPU里面去执行。 CPU相当于人的一个大脑,虽然能执行运算和执行指令,…...
详解Amivest 流动性比率
详解Amivest 流动性比率 Claude-3.5-Sonnet Poe Amivest流动性比率是一个衡量证券市场流动性的重要指标。这个比率主要用于评估在不对价格造成重大影响的情况下,市场能够吸收多少交易量。以下是对Amivest流动性比率的详细解释: 定义: Amivest流动性比率是交易额与绝对收益率的…...
pycharm小游戏制作
以下是一个使用 Python 和 PyGame库在 PyCharm中创建一个简单的小游戏(贪吃蛇游戏)的示例代码,希望对您有所帮助: import pygame import random# 基础设置 # 屏幕高度 SCREEN_HEIGHT 480 # 屏幕宽度 SCREEN_WIDTH 600 # 小方格…...
昇思11天
基于 MindSpore 实现 BERT 对话情绪识别 BERT模型概述 BERT(Bidirectional Encoder Representations from Transformers)是由Google于2018年开发并发布的一种新型语言模型。BERT在许多自然语言处理(NLP)任务中发挥着重要作用&am…...
AI绘画Stable Diffusion【图生图教程】:图片高清修复的三种方案详解,你一定能用上!(附资料)
大家好,我是画画的小强 今天给大家分享一下用AI绘画Stable Diffusion 进行 高清修复(Hi-Res Fix),这是用于提升图像分辨率和细节的技术。在生成图像时,初始的低分辨率图像会通过放大算法和细节增强技术被转换为高分辨…...
适用于Mac和Windows的最佳iPhone恢复软件
本文将指导您选择一款出色的iPhone数据恢复软件来检索您的宝贵数据。 市场上有许多所谓的iPhone恢复程序。各种程序很难选择并选择其中之一。一旦您做出了错误的选择,您的数据就会有风险。 最好的iPhone数据恢复软件应包含以下功能。 1.安全可靠。 2.恢复成功率高…...
64.ThreadLocal造成的内存泄漏
内存泄漏 程序中已动态分配的堆内存,由于某种原因程序为释放和无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。内存泄漏的堆积终将导致内存溢出。 内存溢出 没有足够的内存提供申请者使用。 ThreadLocal出现内存泄漏的真实原因 内存泄漏的发…...
深入刨析Redis存储技术设计艺术(二)
三、Redis主存储 3.1、存储相关结构体 redisServer:服务器 server.h struct redisServer { /* General */ pid_t pid; /* Main process pid. */ pthread_t main_thread_id; /* Main thread id */ char *configfile; /* Absolut…...
python读取写入txt文本文件
读取 txt 文件 def read_txt_file(file_path):"""读取文本文件的内容:param file_path: 文本文件的路径:return: 文件内容"""try:with open(file_path, r, encodingutf-8) as file:content file.read()return contentexcept FileNotFoundError…...
日期选取限制日期范围antdesign vue
限制选取的日期范围 效果图 <a-date-pickerv-model"dateTime"format"YYYY-MM-DD":disabled-date"disabledDate"valueFormat"YYYY-MM-DD"placeholder"请选择日期"allowClear />methods:{//回放日期选取范围限制&…...
【大模型】衡量巨兽:解读评估LLM性能的关键技术指标
衡量巨兽:解读评估LLM性能的关键技术指标 引言一、困惑度:语言模型的试金石1.1 定义与原理1.2 计算公式1.3 应用与意义 二、BLEU 分数:翻译质量的标尺2.1 定义与原理2.2 计算方法2.3 应用与意义 三、其他评估指标:综合考量下的多元…...
《优化接口设计的思路》系列:第2篇—小程序性能优化
优化Uniapp应用程序的性能可以从以下几个方面进行优化: 1.减少页面加载时间:避免页面过多和过大的组件,减少不必要的资源加载。可以使用懒加载的方式,根据用户的实际需求来加载页面和组件。 2.节流和防抖:对于频繁触发…...
prototype 和 __proto__的区别
prototype 和 __proto__ 在 JavaScript 中都与对象的原型链有关,但它们各自有不同的用途和含义。 prototype prototype 是函数对象的一个属性,它指向一个对象,这个对象包含了可以由特定类型的所有实例共享的属性和方法。当我们创建一个新的…...
网络中未授权访问漏洞(Rsync,PhpInfo)
Rsync未授权访问漏洞 Rsync未授权访问漏洞是指Rsync服务配置不当或存在漏洞,导致攻击者可以未经授权访问和操作Rsync服务。Rsync是一个用于文件同步和传输的开源工具,通常在Unix/Linux系统上使用。当Rsync服务未经正确配置时,攻击者可以利用…...
DataWhaleAI分子预测夏令营 学习笔记
AI分子预测夏令营学习笔记 一、直播概览 主持人介绍 姓名:徐翼萌角色:DataWhale助教活动目的:分享机器学习赛事经验,提升参赛者在分子预测领域的能力 嘉宾介绍 姓名:余老师背景:Data成员,腾…...
lnmp php7 安装ssh2扩展
安装ssh2扩展前必须安装libssh2包 下载地址: wget http://www.libssh2.org/download/libssh2-1.11.0.tar.gzwget http://pecl.php.net/get/ssh2-1.4.tgz (这里要换成最新的版本) 先安装 libssh2 再安装 SSH2: tar -zxvf libssh2-1.11.0.tar.gzcd libss…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
