浅谈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 相关文章推荐
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
Jun 18 Python
编程语言Python的发展史
Sep 26 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
Oct 13 Python
Python实现对象转换为xml的方法示例
Jun 08 Python
机器学习经典算法-logistic回归代码详解
Dec 22 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
Feb 23 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
Jul 11 Python
Python数据类型之Tuple元组实例详解
May 08 Python
python3 xpath和requests应用详解
Mar 06 Python
Python greenlet和gevent使用代码示例解析
Apr 01 Python
Python爬虫:Request Payload和Form Data的简单区别说明
Apr 30 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
Jul 14 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
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
curl和libcurl的区别简介
2015/07/01 PHP
PHP按指定键值对二维数组进行排序的方法
2015/12/22 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
jQuery Pagination Ajax分页插件(分页切换时无刷新与延迟)中文翻译版
2013/01/11 Javascript
基于JavaScript自定义构造函数的详解说明
2013/04/24 Javascript
JQuery给元素绑定click事件多次执行的解决方法
2014/05/29 Javascript
js父页面与子页面不同时显示的方法
2014/10/16 Javascript
详解Javacript和AngularJS中的Promises
2016/02/09 Javascript
Bootstrap datepicker日期选择器插件使用详解
2017/07/26 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
JS实现的透明度渐变动画效果示例
2018/04/28 Javascript
JS代码检查工具ESLint介绍与使用方法
2020/02/04 Javascript
vue-socket.io接收不到数据问题的解决方法
2020/05/13 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
Postman无法正常返回结果问题解决
2020/08/28 Javascript
Python中的并发编程实例
2014/07/07 Python
Python同时向控制台和文件输出日志logging的方法
2015/05/26 Python
将Python代码打包为jar软件的简单方法
2015/08/04 Python
目前最全的python的就业方向
2018/06/05 Python
postman传递当前时间戳实例详解
2019/09/14 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
南非最大的花卉和送礼服务:NetFlorist
2017/09/13 全球购物
五一劳动节活动记录
2014/03/23 职场文书
领导班子在批评与自我批评座谈会上的发言
2014/09/28 职场文书
会计岗位职责
2015/02/03 职场文书
教师辞职书范文
2015/02/26 职场文书
暑期社会实践个人总结
2015/03/06 职场文书
民事上诉状范文
2015/05/22 职场文书
旗帜观后感
2015/06/08 职场文书
小学一年级语文教学反思
2016/03/03 职场文书
使用pandas模块实现数据的标准化操作
2021/05/14 Python
SpringBoot生成License的实现示例
2021/06/16 Java/Android
Redis读写分离搭建的完整步骤
2021/09/14 Redis
MySQL数据库如何给表设置约束详解
2022/03/13 MySQL