浅谈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写的windows服务不能启动的问题
Apr 15 Python
Python检测一个对象是否为字符串类的方法
May 21 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
Apr 06 Python
python线程中同步锁详解
Apr 27 Python
python判断设备是否联网的方法
Jun 29 Python
TensorFlow实现iris数据集线性回归
Sep 07 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
Sep 23 Python
python读取ini配置文件过程示范
Dec 23 Python
python输出数学符号实例
May 11 Python
Django用户登录与注册系统的实现示例
Jun 03 Python
Python中json.dumps()函数的使用解析
May 17 Python
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
Apr 24 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的ob_start();控制您的浏览器cache!
2006/11/25 PHP
PHP 和 MySQL 开发的 8 个技巧
2007/01/02 PHP
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
2013/06/20 PHP
php从给定url获取文件扩展名的方法
2015/03/14 PHP
PHP 中使用explode()函数切割字符串为数组的示例
2017/05/06 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
2018/04/20 PHP
PHP cURL获取微信公众号access_token的实例
2018/04/28 PHP
PHP单例模式数据库连接类与页面静态化实现方法
2019/03/20 PHP
用js统计用户下载网页所需时间的脚本
2008/10/15 Javascript
Jquery之美中不足小结
2011/02/16 Javascript
学习Bootstrap组件之下拉菜单
2015/07/28 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
基于node.js实现微信支付退款功能
2017/12/19 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
一文快速详解前端框架 Vue 最强大的功能
2019/05/21 Javascript
vue实现简易计算器功能
2021/01/20 Vue.js
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
python实现TCP服务器端与客户端的方法详解
2015/04/30 Python
解决Python 使用h5py加载文件,看不到keys()的问题
2019/02/08 Python
Python hexstring-list-str之间的转换方法
2019/06/12 Python
PyTorch实现更新部分网络,其他不更新
2019/12/31 Python
Python 实现打印单词的菱形字符图案
2020/04/12 Python
在python中使用nohup命令说明
2020/04/16 Python
浅谈html5标签css3的常用样式
2016/10/20 HTML / CSS
LTD Commodities:礼品,独特发现,家居装饰,家用器皿
2017/08/11 全球购物
高级护理专业大学生求职信
2013/10/24 职场文书
销售冠军获奖感言
2014/02/03 职场文书
护士自我鉴定怎么写
2014/02/07 职场文书
优质服务活动实施方案
2014/05/02 职场文书
教育专业毕业生推荐信
2014/07/10 职场文书
小学生感恩老师演讲稿
2014/08/28 职场文书
三峡导游词
2015/01/31 职场文书
工伤事故赔偿协议书
2015/08/06 职场文书
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python
Vue + iView实现Excel上传功能的完整代码
2021/06/22 Vue.js