浅谈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里disconnect UDP套接字的方法
Apr 23 Python
python日志记录模块实例及改进
Feb 12 Python
python 读写中文json的实例详解
Oct 29 Python
Python iter()函数用法实例分析
Mar 17 Python
Python实现线程状态监测简单示例
Mar 28 Python
Flask框架Flask-Login用法分析
Jul 23 Python
Pandas删除数据的几种情况(小结)
Jun 21 Python
使用python来调用CAN通讯的DLL实现方法
Jul 03 Python
Python模块的定义,模块的导入,__name__用法实例分析
Jan 07 Python
Tensorflow 实现释放内存
Feb 03 Python
关于Python Tkinter Button控件command传参问题的解决方式
Mar 04 Python
python 实现性别识别
Nov 21 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相关资料
2006/10/09 PHP
巧用php中的array_filter()函数去掉多维空值的代码分享
2012/09/07 PHP
PHP实现AES256加密算法实例
2014/09/22 PHP
简单介绍PHP的责任链编程模式
2015/08/11 PHP
PHP实现原比例生成缩略图的方法
2016/02/03 PHP
javascript 鼠标滚轮事件
2009/04/09 Javascript
javascript 表单规则集合对象
2009/07/21 Javascript
js模拟点击事件实现代码
2012/11/06 Javascript
javascript实现单击和双击并存的方法
2014/12/13 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
原生js三级联动的简单实现代码
2016/06/07 Javascript
jQuery实现手机自定义弹出输入框
2016/06/13 Javascript
JavaScript模仿Pinterest实现图片预加载功能
2016/10/25 Javascript
JS html时钟制作代码分享
2017/03/03 Javascript
react-native动态切换tab组件的方法
2018/07/07 Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
2019/10/30 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
2018/02/13 Python
Python中创建二维数组
2018/10/17 Python
pycham查看程序执行的时间方法
2018/11/29 Python
利用Python库Scapy解析pcap文件的方法
2019/07/23 Python
Python实现分数序列求和
2020/02/25 Python
Python3爬虫mitmproxy的安装步骤
2020/07/29 Python
Python实现自动签到脚本功能
2020/08/20 Python
基督教卡片、励志礼品、家居装饰等:DaySpring
2018/10/12 全球购物
经济与贸易专业应届生求职信
2013/11/19 职场文书
违反校纪校规检讨书
2014/02/15 职场文书
操行评语大全
2014/04/30 职场文书
娱乐节目策划方案
2014/06/10 职场文书
文员求职信
2014/07/15 职场文书
师德培训心得体会2016
2016/01/09 职场文书
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers
动视暴雪取消疫苗禁令 让所有员工返回线下工作
2022/04/03 其他游戏
请求模块urllib之PYTHON爬虫的基本使用
2022/04/08 Python