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

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 - 函数 / 字典 / 集合

一.函数 形参和实参&#xff1a; >>> def MyFirstFunction(name): 函数定义过程中的name是叫形参 ... print(传递进来的 name 叫做实参&#xff0c;因为Ta是具体的参数值&#xff01;) print前面要加缩进tab&#xff0c;否则会出错。 >>> MyFirstFun…...

connect to github中personal access token生成token方法

一、问题 执行git push时弹出以下提示框 二、解决方法 去github官网生成Token&#xff0c;步骤如下 选择要授予此 令牌token 的 范围 或 权限 要使用 token 从命令行访问仓库&#xff0c;请选择 repo 。 要使用 token 从命令行删除仓库&#xff0c;请选择 delete_repo 其他根…...

Appium启动APP时报错Security exception: Permission Denial

报错内容Security exception: Permission Denial: starting Intent 直接通过am命令尝试也是同样的报错 查阅资料了解到&#xff1a;android:exported | App quality | Android Developers exported属性默认false&#xff0c;所以android:exported"false"修改为t…...

ubuntu22 使用ufw防火墙

专栏总目录 一、安装 sudo apt update sudo apt install ufw 二、启动防火墙 &#xff08;一&#xff09;启动命令 sudo ufw enable &#xff08;二&#xff09;重启命令 sudo ufw reload 三、配置规则 #允许SSH连接 sudo ufw allow ssh #如果sshd服务端口指定到了8888&a…...

初识STM32:开发方式及环境

STM32的编程模型 假如使用C语言的方式写了一段程序&#xff0c;这段程序首先会被烧录到芯片当中&#xff08;Flash存储器中&#xff09;&#xff0c;Flash存储器中的程序会逐条的进入CPU里面去执行。 CPU相当于人的一个大脑&#xff0c;虽然能执行运算和执行指令&#xff0c;…...

详解Amivest 流动性比率

详解Amivest 流动性比率 Claude-3.5-Sonnet Poe Amivest流动性比率是一个衡量证券市场流动性的重要指标。这个比率主要用于评估在不对价格造成重大影响的情况下,市场能够吸收多少交易量。以下是对Amivest流动性比率的详细解释: 定义: Amivest流动性比率是交易额与绝对收益率的…...

pycharm小游戏制作

以下是一个使用 Python 和 PyGame库在 PyCharm中创建一个简单的小游戏&#xff08;贪吃蛇游戏&#xff09;的示例代码&#xff0c;希望对您有所帮助&#xff1a; import pygame import random# 基础设置 # 屏幕高度 SCREEN_HEIGHT 480 # 屏幕宽度 SCREEN_WIDTH 600 # 小方格…...

昇思11天

基于 MindSpore 实现 BERT 对话情绪识别 BERT模型概述 BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是由Google于2018年开发并发布的一种新型语言模型。BERT在许多自然语言处理&#xff08;NLP&#xff09;任务中发挥着重要作用&am…...

AI绘画Stable Diffusion【图生图教程】:图片高清修复的三种方案详解,你一定能用上!(附资料)

大家好&#xff0c;我是画画的小强 今天给大家分享一下用AI绘画Stable Diffusion 进行 高清修复&#xff08;Hi-Res Fix&#xff09;&#xff0c;这是用于提升图像分辨率和细节的技术。在生成图像时&#xff0c;初始的低分辨率图像会通过放大算法和细节增强技术被转换为高分辨…...

适用于Mac和Windows的最佳iPhone恢复软件

本文将指导您选择一款出色的iPhone数据恢复软件来检索您的宝贵数据。 市场上有许多所谓的iPhone恢复程序。各种程序很难选择并选择其中之一。一旦您做出了错误的选择&#xff0c;您的数据就会有风险。 最好的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性能的关键技术指标

衡量巨兽&#xff1a;解读评估LLM性能的关键技术指标 引言一、困惑度&#xff1a;语言模型的试金石1.1 定义与原理1.2 计算公式1.3 应用与意义 二、BLEU 分数&#xff1a;翻译质量的标尺2.1 定义与原理2.2 计算方法2.3 应用与意义 三、其他评估指标&#xff1a;综合考量下的多元…...

《优化接口设计的思路》系列:第2篇—小程序性能优化

优化Uniapp应用程序的性能可以从以下几个方面进行优化&#xff1a; 1.减少页面加载时间&#xff1a;避免页面过多和过大的组件&#xff0c;减少不必要的资源加载。可以使用懒加载的方式&#xff0c;根据用户的实际需求来加载页面和组件。 2.节流和防抖&#xff1a;对于频繁触发…...

prototype 和 __proto__的区别

prototype 和 __proto__ 在 JavaScript 中都与对象的原型链有关&#xff0c;但它们各自有不同的用途和含义。 prototype prototype 是函数对象的一个属性&#xff0c;它指向一个对象&#xff0c;这个对象包含了可以由特定类型的所有实例共享的属性和方法。当我们创建一个新的…...

网络中未授权访问漏洞(Rsync,PhpInfo)

Rsync未授权访问漏洞 Rsync未授权访问漏洞是指Rsync服务配置不当或存在漏洞&#xff0c;导致攻击者可以未经授权访问和操作Rsync服务。Rsync是一个用于文件同步和传输的开源工具&#xff0c;通常在Unix/Linux系统上使用。当Rsync服务未经正确配置时&#xff0c;攻击者可以利用…...

DataWhaleAI分子预测夏令营 学习笔记

AI分子预测夏令营学习笔记 一、直播概览 主持人介绍 姓名&#xff1a;徐翼萌角色&#xff1a;DataWhale助教活动目的&#xff1a;分享机器学习赛事经验&#xff0c;提升参赛者在分子预测领域的能力 嘉宾介绍 姓名&#xff1a;余老师背景&#xff1a;Data成员&#xff0c;腾…...

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 &#xff08;这里要换成最新的版本&#xff09; 先安装 libssh2 再安装 SSH2: tar -zxvf libssh2-1.11.0.tar.gzcd libss…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

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* …...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...

32单片机——基本定时器

STM32F103有众多的定时器&#xff0c;其中包括2个基本定时器&#xff08;TIM6和TIM7&#xff09;、4个通用定时器&#xff08;TIM2~TIM5&#xff09;、2个高级控制定时器&#xff08;TIM1和TIM8&#xff09;&#xff0c;这些定时器彼此完全独立&#xff0c;不共享任何资源 1、定…...

C++--string的模拟实现

一,引言 string的模拟实现是只对string对象中给的主要功能经行模拟实现&#xff0c;其目的是加强对string的底层了解&#xff0c;以便于在以后的学习或者工作中更加熟练的使用string。本文中的代码仅供参考并不唯一。 二,默认成员函数 string主要有三个成员变量&#xff0c;…...

【Ftrace 专栏】Ftrace 参考博文

ftrace、perf、bcc、bpftrace、ply、simple_perf的使用Ftrace 基本用法Linux 利用 ftrace 分析内核调用如何利用ftrace精确跟踪特定进程调度信息使用 ftrace 进行追踪延迟Linux-培训笔记-ftracehttps://www.kernel.org/doc/html/v4.18/trace/events.htmlhttps://blog.csdn.net/…...

大数据驱动企业决策智能化的路径与实践

&#x1f4dd;个人主页&#x1f339;&#xff1a;慌ZHANG-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 一、引言&#xff1a;数据驱动的企业竞争力重构 在这个瞬息万变的商业时代&#xff0c;“快者胜”的竞争逻辑愈发明显。企业如何在复杂环…...

aurora与pcie的数据高速传输

设备&#xff1a;zynq7100&#xff1b; 开发环境&#xff1a;window&#xff1b; vivado版本&#xff1a;2021.1&#xff1b; 引言 之前在前面两章已经介绍了aurora读写DDR,xdma读写ddr实验。这次我们做一个大工程&#xff0c;pc通过pcie传输给fpga&#xff0c;fpga再通过aur…...