浅谈python新手中常见的疑惑及解答


Posted in Python onJune 14, 2016

1 lambda函数

函数格式是lambda keys:express   匿名函数lambda是一个表达式函数,接受keys参数,返回表达式的值。所以不用return,也没有函数名,经常用在需要key参数的函数中,比如sorted。

2 元组(),它是以逗号辨别的,而不是小括号。比如一个元素的元组新手经常写成(12),其实他会被解释成单个元素12.正确的写法应该是(12,),在元素后面加上逗号。

3 模块导入。比如

import random
print random.choice(range(10))

from random import choice
print choice(range(10))

新手会有一种误解,第二种方法只导入了一个函数,而没有把整个模块导入,这是错误的。整个模块其实已经被导入,只是那个函数的引用被保存了起来。所以from-import这种语法不会带来性能上的差异,也没有节省内存。

4 当你有许多module,比如几百个,想要使用时可能会想一个一个导入太麻烦,有没有简便的方法?答案是有的,就是将这些模块组织成一个package。其实就是将模块都放在一个目录里,然后再加一个__init__.py文件,python会将其看作为package,使用里面的函数就可以以dotted-attribute方式来访问。

5 参数传递可变对象是传引用的,不可变对象是传值的。那么什么对象是可变的,什么是不可变的。所有python对象都有三个属性:类型、标识符和值,如果值是可变的就是可变对象,如果值不可变就是不可变对象。像数字、字符串、元组都是不可变对象,剩下的列表、字典、类、类实例等都是可变对象。

6 迭代器的理解,是实现了迭代器协议的容器对象。自己实现一个迭代器,类中要有__iter__()方法,该方法返回一个对象。这个对象要有__next__()方法,在next方法中的适当位置返回StopIteration异常。迭代器不经常使用,所以不用太担心。有替代方法就是生成器。

class MyIterator(object):
  """docstring for MyIterator"""
  def __init__(self, num):
    self.num = num

  def __iter__(self):
    return self;

  def __next__(self):
    if self.num <= 0:
      raise StopIteration;
    
    self.num -= 1;
    return self.num;

for each in MyIterator(5):
  print(each);

-> 结果

7 生成器。函数中只要出现了yield语句就会将其转变成一个生成器。在遇见yield语句后会保存上下文环境,并退出函数。

注意:生成器中没有return语句。

def fun2(num):
  print("start generator");
  while(num>0):
    yield num;
    num -=1;

a=[each for each in fun2(5)]
print(a);->结果
start generator
[5, 4, 3, 2, 1]

学习过程中,难免出错。如果您在阅读过程中遇到不太明白,或者有疑问。

以上这篇浅谈python新手中常见的疑惑及解答就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 2与Python 3版本和编码的对比
Feb 14 Python
Python处理XML格式数据的方法详解
Mar 21 Python
python自动重试第三方包retrying模块的方法
Apr 24 Python
python中subprocess批量执行linux命令
Apr 27 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
Apr 27 Python
python 获取微信好友列表的方法(微信web)
Feb 21 Python
python中时间转换datetime和pd.to_datetime详析
Aug 11 Python
Python使用APScheduler实现定时任务过程解析
Sep 11 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
Jun 02 Python
详解解决jupyter不能使用pytorch的问题
Feb 18 Python
python的变量和简单数字类型详解
Sep 15 Python
OpenCV项目实践之停车场车位实时检测
Apr 11 Python
Python中死锁的形成示例及死锁情况的防止
Jun 14 #Python
实例探究Python以并发方式编写高性能端口扫描器的方法
Jun 14 #Python
Python使用dis模块把Python反编译为字节码的用法详解
Jun 14 #Python
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
Jun 14 #Python
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
Jun 14 #Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
Jun 14 #Python
浅谈python中的getattr函数 hasattr函数
Jun 14 #Python
You might like
PHP include_path设置技巧分享
2011/07/03 PHP
php使用正则过滤js脚本代码实例
2014/05/10 PHP
浅谈PHP中关于foreach使用引用变量的坑
2016/11/14 PHP
PDO::lastInsertId讲解
2019/01/29 PHP
asp函数split()对应php函数explode()
2019/02/27 PHP
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
javascript 用记忆函数快速计算递归函数
2010/03/15 Javascript
DIY jquery plugin - tabs标签切换实现代码
2010/12/11 Javascript
jquery刷新页面的实现代码(局部及全页面刷新)
2011/07/11 Javascript
深入理解JSON数据源格式
2014/01/10 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
Javascript递归打印Document层次关系实例分析
2015/05/15 Javascript
jquery SweetAlert插件实现响应式提示框
2015/08/18 Javascript
jqueryMobile 动态添加元素,展示刷新视图的实现方法
2016/05/28 Javascript
JS控制FileUpload的上传文件类型实例代码
2016/10/07 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
2016/12/04 Javascript
详解vue引入子组件方法
2019/02/12 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
2019/09/07 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
详解Vue 的异常处理机制
2020/11/30 Vue.js
nodejs中使用worker_threads来创建新的线程的方法
2021/01/22 NodeJs
python flask 多对多表查询功能
2017/06/25 Python
pygame游戏之旅 添加碰撞效果的方法
2018/11/20 Python
selenium+python截图不成功的解决方法
2019/01/30 Python
Pytorch 使用不同版本的cuda的方法步骤
2020/04/02 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
2021/01/05 Python
Django实现简单的分页功能
2021/02/22 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
魅力惠奢品线上平台:MEI.COM
2016/11/29 全球购物
山海经纬软件测试笔试题和面试题
2013/04/02 面试题
考试退步检讨书
2014/01/15 职场文书
运动会邀请函范文
2014/02/06 职场文书
财务担保书范文
2014/04/02 职场文书
2014年店长工作总结
2014/11/17 职场文书
先进个人推荐材料
2014/12/29 职场文书
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python