*)可以这样,不用保存递归中的变量

import os

def findFile (str,dir = os.path.abspath('.')):
for x in os.listdir(dir):
if os.path.isdir(os.path.join(dir,x)):
findFile(str,os.path.join(dir,x))
elif str in x:
print(os.path.join(dir,x))#我一直都是想办法保存在递归的程序中

  

*)谁说while最少会执行一次的,并不是这样

>>> while a>:
... print(a)
... a-=
...
>>>
>>> a=
>>> while a>:
... print(a)
... a-=
...

*)append()和extend()的区别

  append()和extend()都只能接受一个参数,但append()能接受不可迭代的或者不可迭代的,但extend只能接受可迭代的(iterable)

>>> a.extend(2,3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: extend() takes exactly one argument (2 given)
>>> a.extend(2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable

  append()把参数添加到一个下标内

>>> a.append(b)
>>> a
[1, 2, 2, 4, [2, 4]]

  extend()不是

>>> a=[1,2]
>>> b=[2,4]
>>> a.extend(b)
>>> a
[1, 2, 2, 4]
>>> a.append(b)
>>> a
[1, 2, 2, 4, [2, 4]]

  

*)方法名相同的情况下,例如方法名内部有重名的方法和参数,调用的情况

def name1(collection):
print('外面的name1,参数:collection:',collection)
def name1(collection):
print('里面的name1,参数:collection:',collection)
name1(collection)
if __name__=='__main__':
collection=[1,2,3,4,5,6]
name1(collection[2:]) (sort) λ python forTest.py
外面的name1,参数:collection: [3, 4, 5, 6]
里面的name1,参数:collection: [3, 4, 5, 6]

  

*)递归失败:

def name1(collection):
print('外面的name1,参数:collection:',collection)
name1(collection)
Traceback (most recent call last):
File "forTest.py", line 8, in <module>
name1(a)
File "forTest.py", line 5, in name1
name1(collection)
File "forTest.py", line 5, in name1
name1(collection)
File "forTest.py", line 5, in name1
name1(collection)
[Previous line repeated 993 more times]
File "forTest.py", line 2, in name1
print('外面的name1,参数:collection:',collection)
RecursionError: maximum recursion depth exceeded while calling a Python object

  

*)python中的切片也是[a:b]是从a到b-1的

*)关于for循环中range(2),i到底是从0还是1开始。特别是在用数组的长度作为range的参数的时候经常会犯糊涂

  还有range(a,b,c)无论怎样,返回的数组都是[a,....b-1](c>0)或者[a,.....b+1](c<0)就是不到b

#首先
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
#其次
>>> s=[1,2,3,4,5]
>>> length=len(s)
>>> for i in range(length):#所以,这里完全不用-1,类似于,因为range()会减去1,这就抵消掉了数组长度比数组下标多了1这个属性说造成的访问数组会超出index这个trouble。
... print(s[i])
...
1
2
3
4
5
>>> length
5

*)range反向循环、反向递减、将步长设置为负数就好了,注意要调换开始和结束的位置

>>> for i in range(5,3,-1):#从5开始,到3结束
... print(i)
...
5
4
>>>

  

*)这样range(0,0)并不会抛出异常,而是什么也不输出

>>> for i in range(0,0):
... print(i)
...
>>>

  

Python 语言中经常有疑惑的地方的更多相关文章

  1. Python语言中各种进制相互转换

    目录 Python语言中各种进制相互转换 将二进制.八进制.十进制的数分别转换成十进制的方法 将十进制转换成二进制.八进制.十六进制 Python语言中各种进制相互转换 本文参考自https://ww ...

  2. Python语言中的关键字(自己做的读书笔记)

    电脑配置:联想笔记本电脑 windows8系统 Python版本:2.7.8 本文章撰写时间:2015.1.1 作者:陈东陈 阅读说明: 1.本文都是先解释,后放图片: 2.文中斜体部分要么为需要输入 ...

  3. python语言中的编码问题

    在编程的过程当中,常常会遇到莫名其妙的乱码问题.很多人选择出了问题直接在网上找答案,把别人的例子照搬过来,这是快速解决问题的一个好办法.然而,作为一个严谨求实的开发者,如果不从源头上彻底理解乱码产生的 ...

  4. 了解 Python 语言中的时间处理

    python 语言对于时间的处理继承了 C语言的传统,时间值是以秒为单位的浮点数,记录的是从1970年1月1日零点到现在的秒数,这个秒数可以转换成我们日常可阅读形式的日期和时间:我们下面首先来看一下p ...

  5. python语言中的编码问题(续)

    上文提到了python开发中非常重要的两处设置. 一个是编解码器的默认设置defaultencoding >>> import sys >>> sys.getdef ...

  6. Python语言中的按位运算

    (转)位操作是程序设计中对位模式或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多. 在现代架构中, 情况并非如此:位运算的运算速度通常与加 ...

  7. python语言中的数据类型之字典

    数据类型 字典类型dict 用途:记录多个值,列表是索引对应值,而字典是key对应值,其中key对value有描述性 定义方式:在{ }用逗号分隔开多个元素,每个元素都是key:value形式,其中k ...

  8. python语言中的运算符

    基本运算符 1.比较运算符 # >,< ,>= ,<=, ==(比较值) ,!=(不等号) 2.逻辑运算符 and       or      not(取反) 3.算术运算 / ...

  9. python语言中的数据类型

    一.内存管理 1.python解释器的垃圾回收机制 垃圾:当一个值上没有人绑定任何变量名时(当引用计数为0),该值就是一个垃圾. python解释器运行时会检测值的引用计数,当引用计数=0该值会被清除 ...

随机推荐

  1. node——简单的服务器启动+乱码问题解决,响应报文头

    这个是一个比较简单的代码 // 1.加载hrrp模块 var http=require('http'); // 2.创建一个http服务对象 var server=http.createServer( ...

  2. javaScript(其他引用类型对象)

    javascript其他引用类型对象 Global对象(全局)这个对象不存在,无形的对象,无法new一个 其内部定义了一些方法和属性:如下 encodeURI str = www.baidu.com ...

  3. UVALive-8079 Making a Team 排列组合公式化简

    题目链接:https://cn.vjudge.net/problem/UVALive-8079 题意 n个人组队,队伍人数小于等于n,每个队伍需要4个不同的职务的领导. 问这n个人可以组成多少队? n ...

  4. BZOJ 3282 Link Cut Tree (LCT)

    题目大意:维护一个森林,支持边的断,连,修改某个点的权值,求树链所有点点权的异或和 洛谷P3690传送门 搞了一个下午终于明白了LCT的原理 #include <cstdio> #incl ...

  5. PHP的迭代器和生成器

    一.迭代器 分析:想一下,如果把集合对象和对集合对象的操作放在一起,当我们想换一种方式遍历集合对象中元素时,就需要修改集合对象了,违背"单一职责原则",而迭代器模式将数据结构和数据 ...

  6. Vue的数据依赖实现原理简析

    首先让我们从最简单的一个实例Vue入手: const app = new Vue({ // options 传入一个选项obj.这个obj即对于这个vue实例的初始化 }) 通过查阅文档,我们可以知道 ...

  7. vue项目中,如何对static文件夹下的静态文件添加时间戳,以达到清除缓存

    例如config.js文件是存放在static文件夹下,里面存放的是websocket信息,需要经常改动.改动了以后由于缓存信息,使其不生效,因此需要对引入的文件添加时间戳. 最新方法: 注意转义符的 ...

  8. [luogu] P4105 [HEOI2014]南园满地堆轻絮 (贪心)

    P4105 [HEOI2014]南园满地堆轻絮 题目描述 小 Z 是 ZRP(Zombies' Republic of Poetry,僵尸诗歌共和国)的一名诗歌爱好者,最近 他研究起了诗词音律的问题. ...

  9. Git学习总结(8)——Git和SVN之间的基本区别

    GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等.如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应GIT提供的一些概念和特征.所以,这篇文章的主要目的就是 ...

  10. RabbitMQ学习总结(5)——发布和订阅实例详解

    一.Publish/Subscribe(发布/订阅)(using the Java Client) 在前面的教程中,我们创建了一个work Queue(工作队列).工作队列背后的假设是每个任务是交付给 ...