首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python入门到放弃 | 超简单 跟我学(七)

当在函数体第一中,第一打印输出变量名为 x 时候, Python 会将主语句块(位于函数定义上面)中声明参数值打印输出。...对于定义函数来讲, x 是局部。因此,当我改变函数中 x ,主语句块中定义 x 不会受到任何影响。...global 用于声明 x 是一个全局变量,因此当我函数内为 x 赋值,主程序块中 x 值也改变了。...当声明一个带星号参数 *param ,从这个参数开始之后所有参数都会被收集进入一个名为 param 元组中。...类似的,当定义了一个带两个星号参数 **param ,从这个参数开始之后所有参数都会被收入名为 param 字典中。 我会在后面的章节中讲解元组和字典。

40840

代码调试最佳实践

对如何做到这一点有直觉,但是对于怎样才能从“看到这个bug两次”跨越到“可以根据需要在笔记本电脑上持续地再现这个bug”这一点,不知道怎么解释,而且想知道你用来调试技术是否依赖于这些不同开发领域...解释了你再现你bug之后,你需要做什么。...failure:返回一堆错误,不仅仅是一个错误 为了返回更加易于调试有用错误,Rust提供了一个非常令人难以置信错误处理库failure,基本于允许你返回一系列错误,不仅仅是一个错误,因此你可以打印出一堆错误...其它语言中类似于Rust语言failure库工具有: Go语言:习惯用法似乎是把你一堆错误串成一个大字符串,这样你就得到了一长串像这样错误提示:“error:第一个错误:error:第二个错误...所以这个问题绝对不仅仅是初学者需要面临问题。 结语 当我在谈到代码调试技巧总感觉遗漏了一件重要事情,那就是对人们代码调试中哪里会遇到困难一种更深入理解。

94310
您找到你想要的搜索结果了吗?
是的
没有找到

代码调试最佳指南

对如何做到这一点有直觉,但是对于怎样才能从“看到这个bug两次”跨越到“可以根据需要在笔记本电脑上持续地再现这个bug”这一点,不知道怎么解释,而且想知道你用来调试技术是否依赖于这些不同开发领域...解释了你再现你bug之后,你需要做什么。...failure:返回一堆错误,不仅仅是一个错误 为了返回更加易于调试有用错误,Rust提供了一个非常令人难以置信错误处理库failure,基本于允许你返回一系列错误,不仅仅是一个错误,因此你可以打印出一堆错误...其它语言中类似于Rust语言failure库工具有: Go语言:习惯用法似乎是把你一堆错误串成一个大字符串,这样你就得到了一长串像这样错误提示:“error:第一个错误:error:第二个错误...所以这个问题绝对不仅仅是初学者需要面临问题。 ? 结束语 当我在谈到代码调试技巧总感觉遗漏了一件重要事情,那就是对人们代码调试中哪里会遇到困难一种更深入理解。

1.1K40

Linux驱动实践:带你一步一步编译内核驱动程序

学习困惑 记得以前开始学习驱动开发时候,找来很多文章、资料来学习,但是总是觉得缺少了点全局视角。 就好像:想看清一座山全貌,但总是被困在一个、又一个山谷中一样。...最后再介绍中断处理程序中,如何利用信号量、小任务、工作队列,把内核事件传递到应用层来处理。 作为第一个开篇文章,从最简单内核编译开始。...module_init(hello_init); module_exit(hello_exit); 有两个小地方注意一下: 在内核中,打印函数是 printk,不是 printf; 打印信息级别有好几个...以后再修改配置参数,修改内容就会存储 .config 文件中, 第3条指令,是用来配置内核,可以进入 Device Drivers 菜单,然后最底层看到我们 hello driver 被标记成星号...我们这里选择星号(编译进内核),然后按下右方向键,最下方几个按键焦点移动到按钮上: 按下回车键,就会弹出保存对话框,选择默认保存文件 .config 即可,然后按钮高亮时候,按下回车键即可保存

2.9K30

18个月自学AI,2年写就三万字长文,过来人教你如何掌握这几个AI基础概念

网络不需要管它从哪里开始出发,只需要在意从随机起始点到达碗底即可。 解释红色凹凸不平处之前,我们先来看从红碗右上角开始白色虚线。这条线顶端就是网络第一次预测。...因此,当我们用大误差乘以低准确率 l2 值,就是大数字与大数字相乘,因此也将得到 l2_delta 向量中最大数字。 l2_delta 即「下一次迭代中我们希望看到 l2 改变」。...当我们将这个大数字乘以 l2_error ,l2_delta 数字也会很大。之后当我们更新 syn1 ,大乘数意味着大积、大改变或调整。...回忆一下 1.3 提到红色碗,我们本文中介绍所有技巧都呈现在这个碗中。 当我们使用旧层和新 delta 乘积更新突触推动突触正确方向上前进,去往置信度高、准确率高预测结果。...当我们将 syn0,1 值进行增减,新墨西哥州蝴蝶开始扇动翅膀。

1.6K10

Python基础(八):循环深入讲解

​循环深入讲解一、循环简介1、循环作用 思考:假如我有个教练,有⼀天学车过程中你多次转向没有打灯操作,教练说:“长点记性,这个操作重复练习100遍,提醒自己打方向灯”。这个时候程序员会怎么做?...六、while循环嵌套应用1、打印星号(正方形)需求 ***** ***** ***** ***** ***** 代码分析:一输出5个星号,重复打印5# 重复打印5⾏星星j = 0while j <...* **** ***** 代码分析:⼀输出星星个数和行号是相等,每行:重复打印行号数字个星号,将打印星号命令重复执行5次实现打印5。...1、while...else 需求:女朋友生气了,要惩罚:连续说5遍“媳妇儿,错了”,如果道歉正常完毕⼥朋友就原谅了,这个程序怎么写?...print(i)else: print('循环正常结束之后执⾏代码') 因为continue是退出当前⼀次循环,继续下⼀次循环,所以该循环continue控制下是可以正常结束,当循环结束后,

1.1K132

Linux系列之比较命令

假设我们有两个文件: image.png 当我运行comm file1.txt file2.txt,我们会得到: image.png 在我看来,comm输出有些难看,但它是三列。...请原谅糟糕线条: image.png 第一列包含第一个文件参数特有的,第二列包含第二个文件参数特有的,第三列包含两个文件共有的。...然后我们得到一系列变化,第一组变化中,我们可以看到: *** 1,4 **** 这意味着第一个文件中第1到第4。 然后可以看到: - a b c d 这就是文件内容。...只不过a前面有个-,这意味着我们要删除。 标志 含义 blank 不需要任何改变 (-) 需要删除 (+) 需要添加行 !...需要改变 第一组变化中,我们可以看到带有-a需要从第一个文件中删除。

1.2K10

18个月自学AI,2年写就三万字长文,过来人教你如何掌握这几个AI基础概念

网络不需要管它从哪里开始出发,只需要在意从随机起始点到达碗底即可。 解释红色凹凸不平处之前,我们先来看从红碗右上角开始白色虚线。这条线顶端就是网络第一次预测。...因此,当我们用大误差乘以低准确率 l2 值,就是大数字与大数字相乘,因此也将得到 l2_delta 向量中最大数字。 l2_delta 即「下一次迭代中我们希望看到 l2 改变」。...当我们将这个大数字乘以 l2_error ,l2_delta 数字也会很大。之后当我们更新 syn1 ,大乘数意味着大积、大改变或调整。...回忆一下 1.3 提到红色碗,我们本文中介绍所有技巧都呈现在这个碗中。 当我们使用旧层和新 delta 乘积更新突触推动突触正确方向上前进,去往置信度高、准确率高预测结果。...当我们将 syn0,1 值进行增减,新墨西哥州蝴蝶开始扇动翅膀。

69730

UI技巧 | 用户界面设计10个小技巧

点击上方[分享快乐]→[...]右上角→[设为星标⭐]即可第一间获取最新设计资源 我们大多数人开始接触 UI 设计时候,只是知道很少或者根本不懂任何设计理论。...设计不是简单可以用颜色,形状和文字表示,应该是一个「言之有物」过程,即每当我改变字号、添加阴影或改变颜色,一定要有必须这样做理由。...实际上有两种方法,如下图,两种方法都具有相同基色#B9F4BC(圆形背景色),但图标中文件夹和装饰条颜色则不同。我们开始,记住第一个字母相当于色相,其次是饱和度,然后是亮度。 ?...现在,当我们关注基色饱和度S值是 24,亮度B值是 96 当我们为文件夹创建更深绿色,这两个值都会改变。...因此,我们得到了这个公式: 较暗颜色值=饱和度增加,亮度减少 更亮颜色值=饱和度减少,亮度增加 每当我想知道设计应该使用什么样正确颜色,这个公式帮助了

1.4K11

Python 自动化指南(繁琐工作自动化)第二版:六、字符串操作

但是你怎么能在字符串中使用引号呢?键入‘那是爱丽丝猫。’不会起作用,因为 Python 认为字符串Alice之后结束,剩下(s cat.')是无效 Python 代码。...然后,遍历字典,打印每个键-值对,键靠左对齐并用句点填充,值靠右对齐并用空格填充。...我们将列表存储lines中,然后遍历lines中项目。对于每一,我们在行首添加一个星号和一个空格。现在lines中每个字符串都以一个星号开始。...第三步:添加修改后 lines列表现在包含以星号开始修改行。但是pyperclip.copy()期望是单个字符串值,不是字符串值列表。...已经创建了一个僵尸骰子模拟器,允许程序员制作玩游戏的人工智能练习他们技能。僵尸骰子机器人可以很简单,也可以非常复杂,非常适合课堂练习或个人编程挑战。

3.1K30

Spring AOP简单应用

通常来说,日志和业务代码应该是分离Spring AOP能很好实现日志和业务代码分离,当然Spring AOP作用不仅仅是用来打印日志,还可以用来做权限控制,缓存等等......” ?...当我们导入完依赖之后,我们就可以写自己Aspect类,用于监控方法。...(After-Running)   异常通知(After-throwing)   环绕通知(Around) 前面4个较为容易理解,例如“前置通知”,我们通常在一个方法第一打印出传入方法参数,此时就可以使用前置通知方法调用前打印出传入参数...对于“后置通知”实际是“返回通知”和“异常通知”并集,返回通知表示程序正确运行返回后执行,异常通知表示程序不正常运行抛出异常执行,而后置通知则不论程序是否正确运行,一旦离开方法就会执行。...到这里就引入Spring AOP到项目中,集成很简单,但是明白原理才是最重要文章开始大致说了AOP是如何实现,但是很浅显,下篇文章我们再详细看一下动态代理。

33530

day12- 函数

也可以是螺丝刀,如果没有手使用,就会毫无效果 所以我们得调用函数,才能使用函数功能,来看下调用: 语法格式如下所示: 函数名(参数) # 第一种调用方式,如果有参数就填写对应参数,无参数可以不写...大家猜准吗 这个就属于值传递,虽然形参里改变了,但是实际我们定义实际参数值虽然函数中进行了改变,但是实际值是不会改变 当然这种适用于数字,字符串,元祖等不可变类型 那引用传递是什么呢?...myfun(2, 3,c=4) 6、可变关键字参数 **kwargs 定义中使用星号 ** 来表示,允许函数接受任意数量键值对也就是关键字参数,并将它们作为一个字典传递给函数 # 函数可变参数 def...7、参数顺序 一个函数中包含多种参数组合,必须遵守这样顺序:位置参数(必传参数),默认参数,单星号参数,双星号参数 定义参数,位置参数都必须在关键字参数之前 def my_func(a=1, b...,和两个数差,我们打印看一下: print(add(5, 3)) # 执行结果 (8, 2) return 多个返回值,得到是一个元组,后续我们可以根据元祖取值 这里,我们也可以分别接受一下对应

8610

笨办法学 Python · 续 练习 11:`uniq`

当你使用运行,你只需要在任一方向查找峰值,然后尝试为峰值找到“合理原因”。如果峰值是有利,那么试着找出原因并复现。如果峰值是有害,那么试着找出原因并防范于未然。...当我说“峰值”意思是重大变化。运行图应该是波动。事实上,如果对于 45 分钟 Hack,保持不变,那也是坏,你应该找出原因。...它们视频中更容易视觉上解释。 挑战练习 uniq命令仅仅接受sort产生,排序后,并移除重复。当你想要获得列表非重复行时,这非常方便。...你sed命令需要正则表达式,这将去掉history命令头部。接下来用cut来抓取第一个单词作为命令名称。之后通过uniq排序并执行,并且你需要拥有所有你执行命令。...研究性学习 你现在有一个命令列表,你可以开始执行,如果你想深入学习的话。 这是第一个多项目练习,其中你将之前步骤中练习组合成一个练习。你有没有找到关于你流程新东西? 你运行怎么样?

43310

程序员C语言快速上手——基础篇(五)

,由于C语言规范并不严格,还有许多奇奇怪怪代码风格,但这里推荐第一种,比较简洁,易于阅读,且减少代码行数,少了花括号独占那一函数较多情况下,可以减少许多花括号。...需要注意,函数返回值和形式参数都是可选,当有返回值,必须配合return语句返回,当函数没有返回值,应当使用void关键字声明,注意措辞,是应当,不是必须!...大家会发现,这是因为我们自定义函数写在main函数之后,编译器通常从上往下扫描代码,当扫到printError(),会发现并不认识,有些人会想当然认为报错是因为编译器不认识该函数产生实际上是报重定义了不同类型错误...: 1 count=10 2 t=0 如上示例中,counter函数为一个计数函数,每次调用都将传入值加10,可是为什么函数外部打印t值,值没有发生改变呢?...间接寻址运算符 * 以上第10代码中星号是间接寻址运算符,只能对指针变量使用,表示将该指针变量保存地址对应内存中值取出来。

90820

为什么比起 IntelliJ IDEA,更喜欢 Eclipse…

IDEA就像IDE中iPhone——用户会告诉你“一旦你习惯之后,你会觉得更好用”,或者“你怎么还在使用Eclipse?”亦或是“IDEA太棒了,每个人都应该换成IDEA”,等等。 ?...在过去12年间里,主要使用Eclipse,但是某些情况下,使用IDEA——编写Scala时候,编写Android时候,以及最近——由于Eclipse未能为Java 9发版做好准备,所以经过半天努力之后...总是很快地回到Eclipse。仍然更偏爱不仅仅是因为已经内化了所有的关键字组合(你可以IDEA中重用这些组合),也是因为IDEA中还有一些觉得更糟糕东西。...但是当我运行(Spring Boot)应用程序时,它会在底部不是控制台面板中输出东西,并且没有搜索。 8、CTRL +箭头默认跳过整个单词,不是“骆峰式”单词。...9、几年前,当我将它用于Scala,那个项目从未真正编译过。但是猜那更多是Scala错,不是IDE。 如果你说,除了前两个,其余都不是重大问题,那我也同意。

1.8K30

第七节(指针)

本例中,这两个值都是1。 第26var前使用了取址运算符,该行打印var地址。 第27打印指针变量ptr值,与第26打印值相同。 该程序清单在认为是一个很好例子。...数组名不仅是指向数组指针,而且是指针常量,它在程序执行期间保持不变且不能被改变。 这很好理解:如果能改变值,它就会指向别处,不是指向原来数组(该数组位于内存中某固定位置)。...该函数使用传入值,不会改变原始变量,因为无法访问原始变量。 但是,给函数传递一个数组,情况有所不同——传递给函数是数组地址,不是数组中值副本。...当使用函数,指针能让你改变被传递变量值(无论这些值在哪里)。 2:编译器如何知道*指的是乘法、解引用还是声明指针? 编译器根据星号出现上下文来确定是哪一种用法。...如果声明开始是变量类型,编译器就假定该星号用于声明指针。如果星号与已声明为指针变量一起使用,却不在变量声明中,编译器则将该星号假定为解引用。

18340

涂子沛乌镇演讲:新经济新土壤

因为我们这个时代,数据内涵已经发生了深刻地变化,已经不仅仅是传统1、2、3、4这种小数据了。 我们今天数据称之为大数据,是因为我们记录现实手段得到增强。...可以联上互联网,当我们可穿戴式设备连上人体,我们脉搏、心跳源源不断地送上云,这是24小不间断地收集数据,这种爆炸是更大量级爆炸,我们正在见证这种爆炸到来。...,哪个地方果实成熟了,都可以第一间发现,未来农业是大数据驱动精细化农业。...大数据会导致一个大计算社会,大数据影响是我们迈向一个计算型智能社会。 想讲最后一个话题,就是开放数据。我们今天说数据如此重要,数据是资源,我们要让资源全社会流动起来。怎么流动起来?...我们知道人类文明是怎么兴起——所有的城市都是依河。开放数据才能兴起新数据文明! 就讲到这里,谢谢大家。

478100

笨办法学 Python3 第五版(预览)(一)

注意,当我运行给了first 2nd,这导致出现了一个关于“需要超过 3 个值来解包”错误,告诉你没有给足够参数。 学习练习 尝试给你脚本提供少于三个参数。看看你会得到什么错误?...记住这一点,因为我们以后会用到。 常见学生问题 当我运行得到 ValueError: need more than 1 value to unpack。记住一个重要技能是注意细节。...小时候有过。 当我运行收到 NameError: name 'prompt' is not defined。你要么拼错了prompt变量名称,要么忘记了那一。...然后我们告诉我们想要*args(星号参数),这很像你argv参数,但用于函数。这必须放在()括号内才能起作用。 然后我们以:(冒号)结束这一开始缩进。...冒号之后,所有缩进四个空格行都将与此名称print_two相关联。我们第一个缩进行是一个解压参数,与您脚本相同。 为了演示工作原理,我们打印出这些参数,就像在脚本中一样。

16010

【Linux】Linux 项目自动化构建工具 -- makemakefile 使用

Linux中,文件一共有三种时间: 访问时间 (Access):当我们查看文件内容后该时间改变,比如 cat、vim、less; 修改时间 (Modify):当我们修改文件内容后改时间改变,比如...,因为C语言 printf 函数中我们会频繁用到,但是实际上我们C语言学习 ‘\n’ 是 ‘\r’ + ‘n’; ‘\r’:回车,即将光标移动到当前行首; ‘\n’:换行,即将光标移动到下一...; 可以看到,我们C语言中 ‘\n’ 作用是 回车 + 换行,不仅仅是换行,这也是为什么许多台式机 enter 键是下面这样: 2、缓冲 C语言 getchar 函数正确使用 中我们就已经知道...proces.c 中,我们每次打印数据之后让光标回到首,然后刷新缓冲区,再增加 bar 数组里面的标志字符,这样使得我们下一次打印数据可以直接覆盖掉之前数据,并且增加一格,从而达到进度条效果;...注意: printf 函数中,% 具有特殊意义,所以我们需要输入 %% 来对其进行转义;同样, label 数组中,字符 ‘\’ 也是特殊字符,我们需要输入 ‘\\’; 最终得到进度条运行效果如下

1K00

Python 拓展之 *args & **kwargs

写在之前 我们在前几天文章中写函数,它们参数个数都是确定,我们知道世界是不确定,那么函数参数当然也有不固定时候,那么当我们碰到这个问题时候,该怎么解决呢?请看接下来文章。...*args 如果你之前学过 C 或者 C++,看到星号第一反应可能会认为这个与指针相关,然后就开始方了,其实放宽心,Python 中是没有指针这个概念。... Python 中我们使用星号收集位置参数,请看下面的例子: >>> def fun(x,*args): ... print(x) ... res = x ......return res ... >>> print(fun(1,2,3,4,5,6)) 上述例子中,函数参数有两个,但是我们输出时候赋给函数参数个数不仅仅是两个,让我们来运行这个代码,得到如下结果...接下来传入不同值,通过参数 *args 得到结果我们来看一下: >>> print_args(1,2,3) (1, 2, 3) >>> print_args('abc','def','ghi')

48610
领券