浅谈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实现堆栈与队列的方法
Jan 15 Python
Python多线程下载文件的方法
Jul 10 Python
小小聊天室Python代码实现
Aug 17 Python
Python随机函数random()使用方法小结
Apr 29 Python
Python 获取div标签中的文字实例
Dec 20 Python
python实现生成字符串大小写字母和数字的各种组合
Jan 01 Python
python3的print()函数的用法图文讲解
Jul 16 Python
PyCharm取消波浪线、下划线和中划线的实现
Mar 03 Python
如何在VSCode下使用Jupyter的教程详解
Jul 13 Python
如何以Winsows Service方式运行JupyterLab
Aug 30 Python
Python中免验证跳转到内容页的实例代码
Oct 23 Python
pycharm 关闭search everywhere的解决操作
Jan 15 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
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
2006/07/09 PHP
用PHP开发GUI
2006/10/09 PHP
ThinkPHP CURD方法之data方法详解
2014/06/18 PHP
PHP生成树的方法
2015/07/28 PHP
ThinkPHP实现简单登陆功能
2017/04/28 PHP
JavaScript 高效运行代码分析
2010/03/18 Javascript
JavaScript/Js脚本处理html元素的自定义属性解析(亲测兼容Firefox与IE)
2013/11/25 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
2014/08/15 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
2016/08/03 Javascript
值得分享的bootstrap table实例
2016/09/22 Javascript
Angularjs cookie 操作实例详解
2017/09/27 Javascript
js处理包含中文的字符串实例
2017/10/11 Javascript
webpack的CSS加载器的使用
2018/09/11 Javascript
vuejs实现下拉框菜单选择
2020/10/23 Javascript
Python的ORM框架SQLObject入门实例
2014/04/28 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
深入理解python中的select模块
2017/04/23 Python
Python处理文本换行符实例代码
2018/02/03 Python
python入门教程 python入门神图一张
2018/03/05 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
2018/08/22 Python
pyQT5 实现窗体之间传值的示例
2019/06/20 Python
python如何实现代码检查
2019/06/28 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
2020/02/28 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
Spartoo荷兰:鞋子、包包和服装
2018/07/12 全球购物
Expedia法国:全球最大在线旅游公司
2018/09/30 全球购物
七年级数学教学反思
2014/01/22 职场文书
函授毕业个人自我评价
2014/02/20 职场文书
个人工作主要事迹
2014/05/08 职场文书
李培根演讲稿
2014/05/22 职场文书
三方合作意向书范本
2015/05/09 职场文书
海上钢琴师的观后感
2015/06/11 职场文书
会计做账心得体会
2016/01/22 职场文书
Python编程源码报错解决方法总结经验分享
2021/10/05 Python