python系统学习Day3

section4 python function

part one:函数的参数

python函数的参数共有五种类型

#位置参数
def power(x):return x * x#默认参数
def power(x, n = 2) #设置默认值(可省略)s = 1while n > 0:n = n - 1s = s * xreturn s#note
print('''默认参数必须指向不变对象。
由于默认参数是在函数创建时被计算出来的,
可变对象在调用后可能影响到之后函数调用的结果''')#可变参数
def sum(*num):sum = 0for n in num:sum = sum + nreturn sum#调用sum(1, 2, 3)L = [1, 2, 3]sum(*L)#关键字参数
def person(name, age, **kw):print('name:', name)print('age:', age)print('other:', kw)# kw指任意个数关键字参数#调用person('Bob', 23, job='Teacher')dic = {'job': 'Teacher', 'city': 'Beijing'}person('Bob', 24, **dic)#命名关键字参数,限制特定关键字
def person(name, age, *, city, job):  #注意这里city和job是指关键字pass
def person(name, age, *args, city, job): #已有可变参数的不需要加  *,print(name, age, args, city, job)#关键字参数也可以缺省, 指定初始值就好#关键字调用时必须写成key=value的形式,为了解释器能区分位置参数和关键字参数

参数定义的顺序必须是:必选参数, 默认参数, 可变参数, 命名关键字参数, 关键字参数

理解起来有两种分类方式:普通参照位置的参数/、 / 关键字参数, 固定个数的参数 / 可变参数。
位置参照在前,固定个数在前。
部分类型可指定默认值从而实现缺省。

综上,对于任意类型的函数都可以通过类似func(*args, **kw)实现调用

section5 Advanced features

part one:切片

切片对象:list、tumple、strings
切片参数:[x:y:z],起始位置,终止位置,步长。默认值分别为首元素,尾元素,1

>>>L = list(range(100))
>>>L[:10]
>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>L[-10:]
>[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
>>>L[:10:2]
>[0, 2, 4, 6, 8]
>>>L[:]  #原样复制L

tips about Slice

切片操作通常用在等号右面,不能用在左面
对于字符串,单独取出某个字符同样不能放在等号左面,修改字符串时不能单独拎出来一个进行修改

part two:迭代

python中的迭代抽象程度很高,for循环只要作用于一个可迭代元素就可以正常运行

#字典迭代
for key in d:print(key)  #字典默认迭代元素是关键字for value in d.values():passfor kye, value in d.items():pass#字符串迭代
for ch in 'ABC':print(ch)#对list下标循环
for i, value in enumrate(['A', 'B', 'C'])print(i, value)#同时引用两个变量
for x, y in [(1, 1), (2, 4), (3, 9)]print(x, y)

part three:列表生成器

列表生成器list comprehensions,可以用来创建列表,非常强大

#简单生成
>>>[x * x for x in range (1, 11)]
>[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]# 满足特定条件的部分生成
>>>[x * x for x in range(1, 11) if x % 2 == 0]
>[4, 16, 36, 64, 100]
# 对满足不同条件的元素分别处理(需要全覆盖)
>>>[x if x % 2 == 0 else -x for x in range (1,5)]
>[-1, 2, -3, 4]
#if在前必须搭配else, if在后不能搭配else#两层循环生成全排列
>>>[m + n for m in 'AB' for n in 'XY']
>['AX', 'AY', 'BX', 'BY']# 依次遍历生成两个变量
d = {'x':'A', 'y':'B'}
>>>[k + '=' + v for k, v in d.items()]

part four:生成器

列表容量有限,我们可以采用另一种存储方式:存储生成器(生成列表的算法)

  • 方法一:将列表生成器的方括号改为圆括号
>>>L = [x*x for x in range(10)]
>>>L
[0, 1, 4, 16, ..., 81]
>>>g = (x*x for x in range(10))   #圆括号--生成器
>>>g
<generator object <genexpr> at 0x1022ef630>
>>>next(g)        #通过next输出生成的下一个元素
0
>>>next(g)
1
>>>next(g)
4
... ...
>>>next(g)      #没有元素后抛出错误
Traceback (most recent call last):File "<stdin>", line 1, in <module>
StopIteration
#另一种遍历
>>>g = (x*x for x in range(10)) 
>>>for n in g:
...    print(n)
...
0
1
... ...
81
#不需要关心StopIteration的错误

part five:迭代器

凡是能直接作用于for循环的对象都是Iterable类型
凡是能作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列

  • Iterable包括:list tumple dict set str
  • Iterator不包括list dict str
  • Iterable可以通过iter()函数转化为Iterator
from collections.abc import Iterator
isinstance((x for x in range(10)), Iterator)    #Ture

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

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

相关文章

人工智能学习与实训笔记(十五):Scikit-learn库的基础与使用

人工智能专栏文章汇总&#xff1a;人工智能学习专栏文章汇总-CSDN博客 本篇目录 一、介绍 1. 1 Scikit-learn的发展历程及定义 1.2 理解算法包、算法库及算法框架之间的区别和联系 二、Scikit-learn官网结构 三、安装与设置 3.1 Python环境的安装与配置 3.2 Scikit-lea…

【leetcode刷题之路】面试经典150题(1)——数组/字符串

文章目录 1 数组/字符串1.1 【排序】合并两个有序数组1.2【双指针】移除元素1.3 【双指针】删除有序数组中的重复项1.4 【双指针】删除有序数组中的重复项 II1.5 【数学】多数元素1.6 【数组】轮转数组1.7 【动态规划】买卖股票的最佳时机1.8 【贪心】买卖股票的最佳时机 II1.9…

【Windows】MacOS制作纯净版Windows10安装U盘

方法一、在window系统中更新win10&#xff08;不更新引导程序&#xff09; cp -rp /Volumes/Windows10专业版\ 64位/* /Volumes/WIN10/https://baijiahao.baidu.com/s?id1760695844372493842&wfrspider&forpc 方法二、在window系统中更新win10&#xff08;更新引导程…

《Docker极简教程》--Docker容器--Docker容器的创建和使用

一、创建Docker容器 1.1 使用现有镜像创建容器 当使用现有镜像创建容器时&#xff0c;通常会涉及以下步骤&#xff1a; 获取镜像&#xff1a;首先&#xff0c;需要从Docker Hub或其他镜像仓库获取所需的镜像。可以使用docker pull命令来获取镜像&#xff0c;语法如下&#x…

45. 跳跃游戏 II(难度:中等)

题目链接&#xff1a;https://leetcode.cn/problems/jump-game-ii/ 题目描述&#xff1a; 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳…

软件实例分享,洗车店系统管理软件会员卡电子系统教程

软件实例分享&#xff0c;洗车店系统管理软件会员卡电子系统教程 一、前言 以下软件教程以 佳易王洗车店会员管理软件V16.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、会员卡号可以绑定车牌号或手机号 2、卡号也可以直接使用手机号&a…

【Java万花筒】优雅配置,从容应对:Java配置管理库深度解读

灵活应对变化&#xff1a;Java配置管理库全景解析 前言 在构建现代化的Java应用时&#xff0c;配置管理是一个至关重要的方面。精心设计的配置管理能够为应用提供灵活性、可维护性和适应性&#xff0c;而Java社区提供了多种优秀的配置管理库。本文将深入探讨一些主流的Java配…

优秀的电机驱动MCU:MM32SPIN360C

DC-DC电源布局注意点&#xff1a; 电源模块布局布线可提前下载芯片的datasheet&#xff08;数据表&#xff09;&#xff0c;按照推荐的布局和布线进行设计。 1) 芯片电源接近原则&#xff1a; 对于为芯片提供电压的开关电源&#xff0c;应确保它尽量靠近芯片放置。这样可以避…

2024 CKS 题库 | 8、沙箱运行容器 gVisor

不等更新题库 CKS 题库 8、沙箱运行容器 gVisor Context 该 cluster 使用 containerd 作为 CRI 运行时。containerd 的默认运行时处理程序是 runc 。 containerd 已准备好支持额外的运行时处理程序 runsc (gVisor)。 Task 使用名为 runsc 的现有运行时处理程序&#xff0c;…

【打工日常】使用docker部署可视化工具docker-ui

一、docker-ui介绍 docker-ui是一个易用且轻量化的Docker管理工具&#xff0c;透过Web界面的操作&#xff0c;方便快捷操作docker容器化工作。 docker-ui拥有易操作化化界面&#xff0c;不须记忆docker指令&#xff0c;仅需下载镜像即可立刻加入完成部署。基于docker的特性&…

幻兽帕鲁新手游戏攻略分享

在幻兽帕鲁中&#xff0c;提高实力是玩家不断追求的目标。以下是一些提高实力的攻略&#xff1a; 1、升级和进化&#xff1a;通过战斗和完成任务&#xff0c;玩家可以获得经验值&#xff0c;提升自己的等级。随着等级的提升&#xff0c;玩家可以获得技能点&#xff0c;用于提升…

AGAST角点检测

一、AGAST角点检测 C #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #include <pcl/common/io.h> #include <pcl/visualization/pcl_visualizer.h> #include <boost/thread/thread.hpp> #include <p…

支付交易——跨境交易

摘要 老王兢兢业业经营生意多年&#xff0c;一步步从小杂货店做到现在&#xff0c;成立大型贸易公司。在做大做强的过程中&#xff0c;老王觉得国内市场已经饱和&#xff0c;竞争处处是红海。老王留意海外很多年了&#xff0c;决定走出去&#xff0c;转向海外:将国外的商品引进…

【51单片机】AD模数转换DA数模转换(江科大)

1.AD/DA介绍 AD(Analog to Digital):模拟-数字转换,将模拟信号转换为计算机可操作的数字信号 DA(Digital to Analog):数字-模拟转换,将计算机输出的数字信号转换为模拟信号 AD/DA转换打开了计算机与模拟信号的大门,极大的提高了计算机系统的应用范围,也为模拟信号数字化处理…

RestTemplate自定义设置

增加类&#xff1a;RestTemplateConfig import org.apache.http.client.HttpClient; import org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy; import org.apache.http.impl.client.DefaultHttpRequestRetryHandler; import org.apache.http.impl.client.Htt…

GB28181 2022 下联检测项

序号 检测项目 技术要求 1平台注册 (下联) 视频监控联网测试软件注册到受测平 台,并在注册到期前进行刷新注册; 宜支持注册重定向功能。 2平台注销 (下联) 视频监控联网测试软件从受测平台注 销 3平台校时 (下联) 视频监控联网测试软件获取受测平台 的时间。 4平…

Java面向对象案例之打印机对象Printer(一)

类主要结构图 抽象类&#xff1a;Printer&#xff08;打印机作为父类&#xff09;子类&#xff1a;DotMatrixPrinter&#xff08;针式打印机类&#xff09;、InkpetPrinter&#xff08;喷墨打印机类&#xff09;、LaserPrinter&#xff08;激光打印机类&#xff09;测试类&…

# Day44、动态规划(包含题目 ● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ )

代码随想录算法训练营第7周&#xff08;C语言&#xff09;|Day41&#xff08;动态规划&#xff09; Day44、动态规划&#xff08;包含题目 ● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ &#xff09; 518. 零钱兑换 II 题目描述 给定不同面额的硬币和一个总金额。写出函数来计…

【嵌入式硬件】ADC(模数转换器)

目录 1.简介 2.分类 2.1 并行比较模数转换器 2.2 逐次逼近型模数转换器

【网络安全/计算机/编程】实用小工具推荐,让你的电脑更强大

在日常的电脑使用中&#xff0c;我们可能会遇到各种各样的问题&#xff0c;比如找不到想要的音乐、不知道如何合并图片、蓝屏问题困扰等。 今天&#xff0c;我将向大家推荐几款实用的小工具&#xff0c;它们可以帮助我们更方便地解决这些问题。 首先&#xff0c;是PC洛雪音乐…