浅谈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中的条件判断语句与循环语句用法小结
Mar 21 Python
Python Numpy 数组的初始化和基本操作
Mar 13 Python
通过Python 接口使用OpenCV的方法
Apr 02 Python
python merge、concat合并数据集的实例讲解
Apr 12 Python
Pytorch入门之mnist分类实例
Apr 14 Python
python-opencv颜色提取分割方法
Dec 08 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
Aug 14 Python
Python GUI自动化实现绕过验证码登录
Jan 10 Python
使用Bazel编译TensorBoard教程
Feb 15 Python
详解Python中pyautogui库的最全使用方法
Apr 01 Python
记录一下scrapy中settings的一些配置小结
Sep 28 Python
Python使用tkinter制作在线翻译软件
Feb 22 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 cookies中删除的一般赋值方法
2011/05/07 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
php表单加入Token防止重复提交的方法分析
2016/10/10 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
2019/04/11 PHP
jquery ui dialog里调用datepicker的问题
2009/08/06 Javascript
用js来获取上传的文件名纯粹是为了美化而用
2013/10/23 Javascript
js如何获取兄弟、父类等节点
2014/01/06 Javascript
用js替换除数字与逗号以外的所有字符的代码
2014/06/07 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
2014/12/16 Javascript
JavaScript中的类数组对象介绍
2014/12/30 Javascript
jquery实现的树形目录实例
2015/06/26 Javascript
在AngularJS中使用jQuery的zTree插件的方法
2016/04/21 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
2016/12/25 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
详解如何理解vue的key属性
2019/04/14 Javascript
vue 对象添加或删除成员时无法实时更新的解决方法
2019/05/01 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
[07:06]2018DOTA2国际邀请赛寻真——卫冕冠军Team Liquid
2018/08/10 DOTA
[01:46]2020完美世界全国高校联赛秋季赛报名开启
2020/10/15 DOTA
Python类和对象的定义与实际应用案例分析
2018/12/27 Python
Python两个字典键同值相加的几种方法
2019/03/05 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
python 在sql语句中使用%s,%d,%f说明
2020/06/06 Python
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2012/04/17 面试题
经理秘书找工作求职信
2013/12/19 职场文书
2014年党员评议表自我评价
2014/09/27 职场文书
工作骂脏话检讨书
2014/10/05 职场文书
个人先进材料范文
2014/12/30 职场文书
接待员岗位职责
2015/02/13 职场文书
2015年法制宣传月活动总结
2015/03/26 职场文书
2015暑假打工实践报告
2015/07/13 职场文书
申请吧主发表的感言
2015/08/03 职场文书
《攀登者》:“海拔8000米以上,你不能指望任何人”
2019/11/25 职场文书
linux目录管理方法介绍
2022/06/01 Servers