浅谈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的Django框架编写从Google Adsense中获得报表的应用
Apr 17 Python
Python的Django框架中的数据库配置指南
Jul 17 Python
浅析Python编写函数装饰器
Mar 18 Python
利用Python实现Windows定时关机功能
Mar 21 Python
Python2和Python3中print的用法示例总结
Oct 25 Python
Python生成8位随机字符串的方法分析
Dec 05 Python
Python中BeautifuSoup库的用法使用详解
Nov 15 Python
基于python plotly交互式图表大全
Dec 07 Python
python 通过文件夹导入包的操作
Jun 01 Python
Python图像处理二值化方法实例汇总
Jul 24 Python
Pytorch实现WGAN用于动漫头像生成
Mar 04 Python
python处理json数据文件
Apr 11 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
上海无线电三厂简史修改版
2021/03/01 无线电
用IE远程创建Mysql数据库的简易程序
2006/10/09 PHP
桌面中心(三)修改数据库
2006/10/09 PHP
Breeze 文章管理系统 v1.0.0正式发布
2006/12/14 PHP
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
php操作SVN版本服务器类代码
2011/11/27 PHP
PHP中SSO Cookie登录分析和实现
2015/11/06 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
2019/05/29 PHP
XHTML-Strict 内允许出现的标签
2006/12/11 Javascript
javascript 常用关键字列表集合
2007/12/04 Javascript
Prototype PeriodicalExecuter对象 学习
2009/07/19 Javascript
JS类的封装及实现代码
2009/12/02 Javascript
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
2010/03/07 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
2013/08/14 Javascript
SeaJS入门教程系列之SeaJS介绍(一)
2014/03/03 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
2014/08/18 Javascript
使用jQuery操作HTML的table表格的实例解析
2016/03/13 Javascript
JavaScript闭包实例详解
2016/06/03 Javascript
AngularJS基础 ng-switch 指令简单示例
2016/08/03 Javascript
浅谈Angular2 ng-content 指令在组件中嵌入内容
2017/08/18 Javascript
关于HTML5的data-*自定义属性的总结
2018/05/05 Javascript
JavaScript栈和队列相关操作与实现方法详解
2018/12/07 Javascript
vue项目中axios请求网络接口封装的示例代码
2018/12/18 Javascript
详解用JS添加和删除class类名
2019/03/25 Javascript
安装多版本Vue-CLI的实现方法
2020/03/24 Javascript
python实现音乐下载器
2018/04/15 Python
Python子类继承父类构造函数详解
2019/02/19 Python
详解Python给照片换底色(蓝底换红底)
2019/03/22 Python
python实现tail实时查看服务器日志示例
2019/12/24 Python
CSS3中的content属性使用示例
2015/07/20 HTML / CSS
Bogner美国官网:滑雪服中的”Dior”
2018/01/30 全球购物
如何提高JDBC的性能
2013/04/30 面试题
建筑工地宣传标语
2014/06/18 职场文书
2014年前台接待工作总结
2014/12/05 职场文书
以权谋私检举信范文
2015/03/02 职场文书
MySQL 时间类型的选择
2021/06/05 MySQL