浅谈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实现递归版汉诺塔示例(汉诺塔递归算法)
Apr 08 Python
Django框架下在视图中使用模版的方法
Jul 16 Python
Python+Selenium自动化实现分页(pagination)处理
Mar 31 Python
使用Python实现一个栈判断括号是否平衡
Aug 23 Python
基于django channel实现websocket的聊天室的方法示例
Apr 11 Python
python中的数据结构比较
May 13 Python
Django集成CAS单点登录的方法示例
Jun 10 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
Jul 06 Python
python随机生成库faker库api实例详解
Nov 28 Python
基于注解实现 SpringBoot 接口防刷的方法
Mar 02 Python
Python中Permission denied的解决方案
Apr 02 Python
详解OpenCV曝光融合
Apr 29 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 file_get_contents 函数超时的几种解决方法
2009/07/30 PHP
PHP用GD库生成高质量的缩略图片
2011/03/09 PHP
PHP设计模式 注册表模式
2012/02/05 PHP
php 把数字转换成汉字的代码
2015/07/21 PHP
PHP使用DOM对XML解析处理操作示例
2019/07/04 PHP
JavaScript判断两种格式的输入日期的正确性的代码
2007/03/25 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
基于JavaScript的操作系统你听说过吗?
2016/01/28 Javascript
Js+Ajax,Get和Post在使用上的区别小结
2016/06/08 Javascript
HTML5 canvas 9绘制图片实例详解
2016/09/06 Javascript
JS生成和下载二维码的代码
2016/12/07 Javascript
基于BootStrap的前端分页带省略号和上下页效果
2017/05/18 Javascript
详解layui弹窗父子窗口之间传参数的方法
2018/01/16 Javascript
微信小程序分享海报生成的实现方法
2018/12/10 Javascript
Vue.js递归组件实现组织架构树和选人功能
2019/07/04 Javascript
vue 实现模糊检索并根据其他字符的首字母顺序排列
2019/09/19 Javascript
微信小程序实现分页加载效果
2020/11/19 Javascript
JS相册图片抖动放大展示效果的示例代码
2021/01/29 Javascript
[07:08]2014DOTA2西雅图国际邀请赛 小组赛7月11日TOPPLAY
2014/07/11 DOTA
[46:43]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第三局
2016/02/28 DOTA
初学Python实用技巧两则
2014/08/29 Python
python分割文件的常用方法
2014/11/01 Python
Python实现测试磁盘性能的方法
2015/03/12 Python
python删除字符串中指定字符的方法
2018/08/13 Python
DRF跨域后端解决之django-cors-headers的使用
2019/01/27 Python
python爬取酷狗音乐排行榜
2019/02/20 Python
利用Tensorflow的队列多线程读取数据方式
2020/02/05 Python
Django单元测试中Fixtures用法详解
2020/02/25 Python
解决python使用list()时总是报错的问题
2020/05/05 Python
电气自动化自荐信
2013/10/10 职场文书
2014年师德承诺书
2014/05/23 职场文书
滞留工资返还协议书
2014/10/19 职场文书
先进个人评语大全
2015/01/04 职场文书
JavaScript 防篡改对象的用法示例
2021/04/24 Javascript
SQL注入详解及防范方法
2021/12/06 MySQL
pnpm对npm及yarn降维打击详解
2022/08/05 Javascript