浅谈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中SocketServer模块处理网络请求的用法
Jun 28 Python
python numpy和list查询其中某个数的个数及定位方法
Jun 27 Python
Python实现多级目录压缩与解压文件的方法
Sep 01 Python
Linux下远程连接Jupyter+pyspark部署教程
Jun 21 Python
Python处理时间日期坐标轴过程详解
Jun 25 Python
python+django+rest框架配置创建方法
Aug 31 Python
python对文件的操作方法汇总
Feb 28 Python
Python应用实现处理excel数据过程解析
Jun 19 Python
django模型类中,null=True,blank=True用法说明
Jul 09 Python
python爬取网易云音乐热歌榜实例代码
Aug 07 Python
详解python tkinter 图片插入问题
Sep 03 Python
详解python的xlwings库读写excel操作总结
Feb 26 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
Drupal7中常用的数据库操作实例
2014/03/02 PHP
分享一段PHP制作的中文拼音首字母工具类
2014/12/11 PHP
PHP5.3以上版本安装ZendOptimizer扩展
2015/03/27 PHP
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
一个对于Array的简单扩展
2006/10/03 Javascript
JavaScript入门教程(11) js事件处理
2009/01/31 Javascript
js复制到剪切板的实例方法
2013/06/28 Javascript
jQuery图片轮播的具体实现
2013/09/11 Javascript
不到30行JS代码实现Excel表格的方法
2014/11/15 Javascript
Jquery实现仿腾讯微博发表广播
2014/11/17 Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
2014/12/19 Javascript
JS实现仿FLASH效果的竖排导航代码
2015/09/15 Javascript
JavaScript中的return语句简单介绍
2015/12/07 Javascript
深入浅析Node.js 事件循环
2015/12/20 Javascript
javascript基础语法学习笔记
2016/01/04 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
防止重复发送 Ajax 请求
2017/02/15 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
2017/04/25 Javascript
BootStrap中Table隐藏后显示问题的实现代码
2017/08/31 Javascript
vue环形进度条组件实例应用
2018/10/10 Javascript
JS实现图片幻灯片效果代码实例
2020/05/21 Javascript
electron踩坑之dialog中的callback解决
2020/10/06 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
[01:04:08]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第一场 12.16
2020/12/18 DOTA
python中的测试框架
2020/11/13 Python
HTML5 本地存储之如果没有数据库究竟会怎样
2013/04/25 HTML / CSS
大学生大二自我鉴定
2013/10/28 职场文书
和平主题的演讲稿
2014/01/12 职场文书
新郎婚宴答谢词
2014/01/19 职场文书
电脑饰品店的创业计划书
2014/01/21 职场文书
学习党代会心得体会
2014/09/05 职场文书
迎国庆演讲稿
2014/09/15 职场文书
秦始皇兵马俑导游词
2015/02/02 职场文书
文言文辞职信
2015/02/28 职场文书
理解深度学习之深度学习简介
2021/04/14 Python
Redis延迟队列和分布式延迟队列的简答实现
2021/05/13 Redis