浅谈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使用cPickle模块序列化实例
Sep 25 Python
Python实现对比不同字体中的同一字符的显示效果
Apr 23 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
Aug 05 Python
Centos7 Python3下安装scrapy的详细步骤
Mar 15 Python
python操作excel的方法(xlsxwriter包的使用)
Jun 11 Python
python把数组中的数字每行打印3个并保存在文档中的方法
Jul 17 Python
python3 pygame实现接小球游戏
May 14 Python
Python Lambda函数使用总结详解
Dec 11 Python
python中p-value的实现方式
Dec 16 Python
Python3中的tuple函数知识点讲解
Jan 03 Python
如何在Python中妥善使用进度条详解
Apr 05 Python
python数字图像处理之图像的批量处理
Jun 28 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防盗链代码实例
2014/08/27 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
2014/09/10 PHP
Django 中 cookie的使用
2017/08/17 PHP
php解析非标准json、非规范json的方式实例
2020/12/10 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
2007/03/10 Javascript
Chrome中模态对话框showModalDialog返回值问题的解决方法
2010/05/25 Javascript
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
将form表单中的元素转换成对象的方法适用表单提交
2014/05/02 Javascript
jQuery中after()方法用法实例
2014/12/25 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
BootStrap框架中的data-[ ]自定义属性理解(推荐)
2017/02/14 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
2017/02/22 Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
2017/06/12 Javascript
Angularjs cookie 操作实例详解
2017/09/27 Javascript
jQuery动态操作表单示例【基于table表格】
2018/12/06 jQuery
Vue的H5页面唤起支付宝支付功能
2019/04/18 Javascript
详解使用uni-app开发微信小程序之登录模块
2019/05/09 Javascript
vue轻量级框架无法获取到vue对象解决方法
2019/05/12 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
2019/06/11 Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
2019/10/10 Javascript
微信sdk实现禁止微信分享(使用原生php实现)
2019/11/15 Javascript
[01:47]2018年度DOTA2最佳教练-完美盛典
2018/12/16 DOTA
python打开网页和暂停实例
2014/09/30 Python
Python中文件操作简明介绍
2015/04/13 Python
python中list常用操作实例详解
2015/06/03 Python
Python实现自动发送邮件功能
2021/03/02 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
2018/03/13 Python
PyQt5每天必学之工具提示功能
2018/04/19 Python
详解python中的异常和文件读写
2021/01/03 Python
北美三大旅游网站之一:Travelocity
2017/08/12 全球购物
Marlies Dekkers内衣美国官方网上商店:高端内衣品牌
2018/11/12 全球购物
公司财务自我评价分享
2013/12/17 职场文书
国际经济与贸易专业大学生职业规划书
2014/03/01 职场文书
基层党建工作汇报材料
2014/08/15 职场文书
《中国梦我的梦》小学生演讲稿
2014/08/20 职场文书
会计工作检讨书
2015/02/19 职场文书