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

从0开始的Python学习008变量

局部变量 ---- 在我们定义函数的过程中,函数内外具有相同名称的变量是没有任何关系的。变量的名称对于函数来说是局部的,而它所在的代码块就是它的作用域。...使用局部变量 #局部变量 def func(x): print('x is',x) x = 2 print('Changed local x to',x) x = 5 func...使用global语句 ---- 如果想要在函数中为函数外的变量赋值,我们就要声明这个变量是全局的。 但是要尽量避免这么做,这样会使你的代码模糊。...#全局变量global #global定义的变量是全局的并且定义在函数内的变量可以为在函数外的变量赋值 def func(): global x print('x is',x)...前三行是局部变量,后三行是全局变量,可以看出明显的区别就是,局部变量无论你怎么改变它都不影响除了它代码块以外的变量值,而全局变量在函数内的变量的改变,其他作用域的变量值也会发生改变。

48320

哪来的技术债务?也许只是从几个随意命名的变量开始

做前端的应该有体会,当代码量达到一定程度的时候,起名字都是一件头疼的事情,哪有那么多名字给你用呀。...所以, idstyle1,idStyle2,idStyle3...这些都会出现,当然了这些算不了什么技术债务,无非是几个变量名而已。...真正的问题是,这些变量名所引用的代码,当它们被import进来的时候,谁也不知道它们是干什么的,在哪里。SO,这些变量名、代码就跟现在的老太太一样,没人敢动了。...因为它不是人力可以避免的,因为需求是无法预测的,你当初做的技术设计再完美,也无法满足所有的需求。所以随着需求的增加,代码的反复,在大趋势上,代码会不可避免的越来越混乱。 所以,会有大版本更新。...“就在你自己的身上,如果你总这样写东西,那么你的技术将没有进展”,这就是有些人工作了十年,但只是把一年的工作经验用了十年的原因。

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

    单链表反转

    前言 今天继续说链表,常见的算法问题有以下几种: 单链表反转 两个有序的链表合并 删除链表倒数第n个结点 求链表的中间结点 链表中环的检测 之前说过链表从尾开始打印链表,有的朋友说和这个单链表反转还是有区别...然后开始反转当前结点指向新链表。 新链表更新到当前结点。 旧链表更新到next。...那我们就先来找找这其中的重复工作。 由刚才的算法得知,从前面开始反转比较麻烦,那我们是不是可以先通过递归递到最后的结点,然后开始往前归呢?...把链表指针递到尾结点 归:从尾结点开始,每次反转相邻两个结点,并将尾结点指向null。...从逻辑上讲,进程的堆栈是由多个堆栈帧构成的,其中的每个堆栈帧都对应一个函数调用。当函数调用发生时,新的堆栈帧被压入堆栈;当函数返回时,相应的堆栈帧从堆栈中弹出。

    40020

    新的学习:从Python开始

    今天开始作一些研究和学习,这不可避免的涉及到了一些自己不甚熟悉的技术,比如:Python 所以翻了一些资料,自己了解学习,顺便贴到这里,给同我一样对这些不熟悉的朋友做个参考,也给自己做个记录. __...Python是免费的 Guido van Rossum于1990年开始开发Python,最初的目的无非是一个自娱的项目。...获取Python 你可以从http://www.python.org或者各类平台上的Python版本。...接着在“>>>”提示符下键入:>>>print “Hello World”这个大家耳熟能详的程序就在屏幕上显示出结果,你还可以如下所示给变量赋值:>>>myvar = 42>>>print myvar在上例中会显示结果...它可以开发出各种各样的应用程序,从功能齐备的邮件列表软件到各种跨平台的GUI应用程序一应俱全。

    53620

    Web 3.0 从你的手机开始

    我很感谢 Jason Calacanis 开始了这个话题,但事实上,Mahalo 不是 Web 2.0 或者 Web 3.0。Mahalo 应该算是Web 1.1。...当你步入一个商店,你的网络转到室内的 WiFi。现在你就能在线浏览交互的 Web 提供的目录服务。...你可以举出成千上万的例子来说明一个公司怎样在网站上通过移动设备服务它的客户。 iPhone 是一个非常好的开始,并给人展示哪些将是可能的。...显然还有其他公司跟随 Apple 的步伐,并带来了他们自己的设备。 网站开始直接迎合这些新的移动设备用户只是个时间问题,那时我们才会看到一个真正的新的网络的出现。...一些行业领先的公司已经开始有所动作,Facebook(其的移动服务),(通过 SMS 关键字追踪)和 Flickr(地里编码照片),这些都是我能想到的。

    47420

    【日拱一卒】链表——链表反转(递归解法)

    前言 上篇我们主要介绍链表反转的原地反转解法。 除此以外,是否还有其他解法? 当然,今天就来看看链表反转的递归解法。...递归 递归,字面意思,有”递“也有”归“ 拿我们经常听到的斐波那契数列来说,公式如下 f(n) = f(n-1) + f(n-2); f(1) = 1, f(2) = 1 现在比如求解f(5)的值,按照公式...从图中可以看出,各个节点已经分解到不能再分解,此时的叶子节点都是已知值,f(1)=1,f(2)=2 ”递“过程走完了,下面开始”归“ ?...如上图所示,沿着红色箭头的方向开始回归,最终得到f(5)的值为8 如上就是递归的过程,从下面的代码层面,我们可以看到底层的表示形式就是自己调用自己,直到满足阈值条件则停止。...我们假设此时传入的head指向的是带反转的链表,目前head的值为5。

    58310

    一道经典的MySQL面试题,答案出现三次反转

    首先这道题整体来看,想表达的是对于MySQL中自增列的理解。 按照我们常规理解的逻辑,ID自增,应该是18,按照这个逻辑怎么都不应该是15吧? 但是这个答案对吗?显然不是,我们进入第一轮反转。...如果节点重启,会从数据列中按照max(id)+1的方式来处理,在多环境历史数据归档的情况下,如果主库重启,很可能会出现数据不一致的情况,记得在MySQL bug中很多人留言,说十多年前的老问题了,怎么还不解决...into test_myisam(id,name) values(5,'ee'); Query OK, 1 row affected (0.00 sec) 此时查看test_innodb自增列已经开始增长...(0.00 sec) 重启数据库 #mysqld_safe --defaults-file=/data/mysql_5723/my.cnf & 此时查看test_innodb和test_myisam的自增列就开始出现差异了...这个问题不够严谨是因为技术是逐步发展的,这个问题在MySQL 8.0中有了答案,对于InnoDB的自增列信息,如果断电之后会直接丢失,很可能造成级联从库间的数据同步出现问题,而在MySQL 8.0之后,

    70931

    从0开始的Python学习011模块

    模块基本上就是一个包含了所有你定义的函数和变量的文件。为了在其他程序中重用模块,模块的文件名必须以.py为扩展名。 模块可以从其他程序 输入 以便利用它的功能。这也是我们使用Python标准库的方法。...sys模块包含了与Python解释器和它的环境有关的函数。 当Python执行import sys语句的时候,它在sys.path变量中所列目录中寻找sys.py模块。...sys模块中的argv变量通过使用点号指明——sys.argv——这种方法的一个优势是这个名称不会与任何在你的程序中使用的argv变量冲突。另外,它也清晰地表明了这个名称是sys模块的一部分。...from...import语句 ---- 如果你想要直接输入argv变量到你的程序中(避免在每次使用它时打sys.),那么你可以使用from sys import argv语句。...记住这个模块应该被放置在我们输入它的程序的同一个目录中,或者在sys.path所列目录之一。 dir()函数 ---- 你可以使用内建的dir函数来列出模块定义的标识符。标识符有函数、类和变量。

    62130

    从0开始的Python学习016异常

    我在控制台写了一段无效的代码,将print()的括号去掉,在执行这条语句的时候,系统提示语法错误,无效的语句(我百度翻译的)。这就是错误处理器所作的工作。 再换一种方式写错误: ?...我们通常把容易产生异常的语句放置在try块中,把做异常处理的语句放在except块中。...我们把所有可能引发错误的语句放在try块中,然后在except从句/块中处理所有的错误和异常。except从句可以专门处理单一的错误或异常,或者一组包括在圆括号内的错误/异常。...你需要指明错误/异常的名称和伴随异常触发的异常对象。这个异常应该是Error和Exception类的子类。这就用到了继承的思想,使用__init__方法初始一些方法和参数。...这里使用了time的sleep函数,里面的参数是它的运行间隔。 ? 这样我们就有时间去使用CTRL+c使程序发生异常。这时候我们发现finally块中的语句还是运行的,文件正常关闭了。

    63930

    从0开始的Python学习003序列

    sequence 序列 序列是一组有顺序数据的集合。不知道怎么说明更贴切,因为python的创建变量是不用定义类型,所以在序列中(因为有序我先把它看作是一个有序数组)的元素也不会被类型限制。...,一旦建立,tuple的各个元素不可再变更,而list的各个元素可以再变更。...从含义可以看出和数学的开区间,闭区间正好相反。所以这个地方容易记错。 ?...a3 = [1,[2,3]] #空序列 a4 = [] print(a3,type(a3)) print(a4) 序列元素的引用 这点和数组有点像了,我们可以通过下标(从0开始)去获取元素。...(a1[:5])             # 从开始到下标4 (下标5的元素 不包括在内) print(a1[2:])             # 从下标2到最后 print(a1[0:5:2])

    48120

    整理你的报告从使用SQL开始

    这时候我才意识到,那么多数据源都是本地excel文件是多么的恐怖。以上截图只是少部分而已…… 而幸运的是,其实有一半的查询是直接来自于MySQL的同一个数据库,而这几十张表只需要一次验证即可。...所以衷心地建议刚开始搭建模型的同学: 尽量要从数据库导入数据! 尽量不要从excel导入数据! 所以这两天,我马上将报告中用到excel表的查询,挨个转移到MySQL中,基本转移得差不多了。...当然,在转移的过程当中,自然也会发生一些不开心的小事情,比如: 这张图在各种场景,各种方式导入到Power BI 中会发生的错误,尤其是对于很多新手来说,遇到这样的错误,往往很困惑。...今天这篇文章的后半部分就来说一下这个问题出现的原因以及解决措施。 我们导入一个包含三张sheet表的excel文件, 选中sheet1加载数据,它直接呈现了最终的结果: 但是这个过程是怎么发生的呢?...而且这样做还有个好处,就是如果你将excel文件保存为xlsb或者更改数据源从mysql中获取,查询会继续正常工作。 好了,希望各位同学以后遇到相似问题时能够快速解决。

    1.6K31

    从0开始的Python学习009参数

    在函数定义的时候给参数赋值使用(参数,参数=值......),从而给形参指定默认值。 注意默认参数的值是一个不可变的参数(也就是说默认参数是一个确定的值)。...#默认参数值 #对于参数 我们希望参数值是可选的智能的,如果使用者没有提供参数值的时候,程序会使用默认的参数。...重要 只有在形参表末尾的那些参数可以有默认参数值,即你不能在声明函数形参的时候,先声明有默认值的形参而后声明没有默认值的形参。 这是因为赋给形参的值是根据位置而赋值的。...例如,def func(a, b=5)是有效的,但是def func(a=5, b)是 无效 的 关键参数 ---- 对于多参数的函数,我只想指定某个或某几个参数的值,这时就可以使用命名给参数赋值,这样被复制的参数时关键参数...我们是使用关键字(参数名)而不是参数的位置来给函数指定实参。 优势 1.不用担心参数的顺序,使使用函数变得简单。 2.假设其他的参数都有默认值,我们可以只给我们想要的参数赋值。

    48620

    商城项目-从0开始品牌的查询

    7.从0开始品牌的查询 商品分类完成以后,自然轮到了品牌功能了。 先看看我们要实现的效果: ? 接下来,我们从0开始,实现下从前端到后端的完整开发。...7.1.设计前端页面 为了方便看到效果,我们新建一个MyBrand.vue(注意先停掉服务器),从0开始搭建。 ?...,等下在js代码中定义 total-items:指向了totalBrands变量,等下在js代码中定义 template模板中,渲染了四个字段: id: name image,注意,我们不是以文本渲染...我们编写一个函数来完成赋值,提高复用性: methods: { getDataFromServer(){ // 从服务端加载数据的函数 // 伪造演示数据...接下来,我们完善请求参数: methods: { getDataFromServer() { // 从服务端加载数据的函数 this.loading = true;

    4.7K20

    为什么数组的下标从 0 开始?

    首先,我们来复习下数组的定义 数组是一组连续内存空间存储的具有相同类型的数据,整个排列像一条线一样,是一种线性表数据结构。 ? 那么,问题来了,数组的下标为什么要从 0 开始?从 1 开始行不行?...端好你的小茶杯,开始进入正题 数组之所以广泛使用,是因为它支持随机访问。 什么叫随机访问? 数据在内存中都是按顺序存放的,通过下标直接触达到某一个元素存放的位置。 ?...【0】位置的 `微` ② 读取上面数组的 【9999】位置的 `注` 由于基于计算的内存地址读取数据,上面两种情况的耗费的时间是一样,时间复杂度为 O(1) 注意:想要使用随机访问,一定要满足两个条件...: 1、连续的内存空间 2、相同类型的数据 知识补充: 与随机访问对应的是顺序访问 顺序访问:链表在内存中不是按顺序存放的,而是通过指针连在一起,访问某一元素,必须从链头开始顺着指针才能找到某一个元素...突然,一个奇怪的念头冒了出来,假如我们将数组的首个下标从 1 开始 ,会怎么样? ?

    89120

    SQL 查询是从 Select 开始的吗?

    好吧,显然很多SQL查询都是从SELECT开始的(实际上本文只是关注SELECT查询,而不是INSERT或其它别的什么)。 但是!...最后我得出的结论是:“窗口函数必须在WHERE和GROUP BY之后运行,所以你做不到”。但这让我想到了一个更大的问题 — SQL查询的实际运行顺序是什么? 这是我凭直觉就知道的事情(“我肯定知道!...所以: 当你只想了解哪些查询是有效的,以及如何推理给定查询的结果时,可以使用此图。 你不应该使用此图来解释查询性能或任何有关索引的事情,那是一个复杂得多的问题,涉及更多变量。...你的数据库引擎肯定还会在开始运行查询之前执行一系列检查,确保你在SELECT和GROUP BY中放置的内容合在一起是有意义的,因此在开始制定执行计划之前,它必须将查询作为一个整体来查看。...6、LINQ以FROM开始查询 LINQ(一种C#和VB.NET中的查询语法)使用的顺序为FROM … WHERE … SELECT。

    1.7K20

    从 MySQL 物理外键开始的思考

    ) Using FOREIGN KEY Constraints(mysql官网) 原文:用外键的好处我就不多说了,既然是关系型数据库,外键的约束为我们保证了数据主从关系和产生的先后关系,级联操作为我们的...我们来看个例子,然后我们根据以下的点来分析: 一、外键的性能问题 我刚写了一些,然后发现有人写的更好而且简洁,就引用吧:@mysqlops 为何说外键有性能问题: 1.数据库需要维护外键的内部管理; 2...二、mysql的外键设计问题(对SQL标准的背离) 虽然很多人都不推荐你在关系型数据库使用外键。 但你更多听到的是mysql的,而不是SQLserver或者其他。...比较公认的是,他的外键设计得的确不是很好,限制多功能不强大等。(同样的,讨论是不是该用存储过程也存在这种思考) 这里贴上一些从博客园看到的,比较严重的问题。...直到InnoDB实现延迟的约束检查之前,一些事情是不可能的,比如删除一个通过外键参考到自身的记录。

    3.8K20

    从单元测试中思考依赖反转的重要性

    查看下源代码以及 ut case, 发现槽点蛮多,分享下如何修复,写单测要注意的一些点,由此引出设计模式中的概念依赖反转、依赖注入、控制反转 失败 case func toSeconds(in int64...,对于构建大型项目很有帮助 依赖反转 DIP 原则 我们还经常听说一个概念,就是依赖反转 dependency inversion principle, 他有两个最重要的原则: High-level...当然不,基于这么多年的工程实践,我这里面有个准则分享给大家:易变的模块需要做出抽像、跨 rpc 调用的需要做出抽像 控制反转 IOC 思想 本质上依赖注入是控制反转 IOC 的具体一个实现。...在传统编程中,表达程序目的的代码调用库来处理通用任务,但在控制反转中,是框架调用了自定义或特定任务的代码,Java 党玩的比较多 推荐大家看一下 coolshell 分享的 undo 例子。...中台化会抽像出共有的流程,每个新的业务只需要配置文件自定义需要的哪些模块即可,这其实也是一种控制反转的思想

    53740

    从0开始的计算机之路

    对等网与客户/服务器结构网络 对等网不但方便连接两台以上的电脑,而且更关键的是它们之间的关系是对等的,连接后双方可以互相访问,没有主客阶级差异;对等网不能共享可执行程序 客户/服务器结构的局域网,能共享服务器上的可执行程序...网络拓扑结构的定义 计算机网络中的拓扑结构是指网络中的计算机、线缆,以及其他组件的物理布局。...- (搜索环路:所有环路的形成都是由于目的路径不明确导致混乱而造成的,例如第二层,一个广播信息经过两个交换机的时候会不断恶性循环的产生广播,造成环路) 优点: 具有较大的容错性,不会出现单点崩溃的现象...在结构化网络模型中,节点维护的邻居都是有规律的,P2P网络的拓扑结构是严格受到控制的,信息资源将有规则的组织存放到合适的节点,查询以较少的跳数 【跳数实际上是一个数值(振幅),简单的说就是指一个数(空间...)可以被等分成多少个另一个数(相互隔离的或抽象的或连续的空间)的值。】

    44630
    领券