浅谈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模板的使用方法(图文)
Nov 04 Python
Python THREADING模块中的JOIN()方法深入理解
Feb 18 Python
Python读取一个目录下所有目录和文件的方法
Jul 15 Python
Mac 上切换Python多版本
Jun 17 Python
python编程嵌套函数实例代码
Feb 11 Python
使用Python和Prometheus跟踪天气的使用方法
May 06 Python
对Python3中列表乘以某一个数的示例详解
Jul 20 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
Nov 29 Python
简单了解python元组tuple相关原理
Dec 02 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
Apr 22 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
Nov 15 Python
Python实现Kerberos用户的增删改查操作
Dec 14 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
2014过年倒计时示例
2014/01/31 PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
2014/06/13 PHP
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
php实现window平台的checkdnsrr函数
2015/05/27 PHP
laravel学习教程之关联模型
2016/07/30 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
ExtJS[Desktop]实现图标换行示例代码
2013/11/17 Javascript
jquery绑定事件不生效的解决方法
2014/02/11 Javascript
基于javascript实现九宫格大转盘效果
2020/05/28 Javascript
js获取页面及个元素高度、宽度的代码
2016/04/26 Javascript
如何让一个json文件显示在表格里【实现代码】
2016/05/09 Javascript
jQuery实现淡入淡出的模态框
2017/02/09 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
2017/05/12 Javascript
vue axios post发送复杂对象问题
2019/06/04 Javascript
微信小程序实现拨打电话功能的示例代码
2020/06/28 Javascript
JavaScript中arguments的使用方法详解
2020/12/20 Javascript
python进阶教程之模块(module)介绍
2014/08/30 Python
python OpenCV学习笔记实现二维直方图
2018/02/08 Python
python 多维切片之冒号和三个点的用法介绍
2018/04/19 Python
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
Python基础之循环语句用法示例【for、while循环】
2019/03/23 Python
Python基础学习之时间转换函数用法详解
2019/06/18 Python
超简单的Python HTTP服务
2019/07/22 Python
基于Python实现大文件分割和命名脚本过程解析
2019/09/29 Python
python 如何去除字符串头尾的多余符号
2019/11/19 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
Django 权限管理(permissions)与用户组(group)详解
2020/11/30 Python
浏览器实现移动端高性能css3动画(开启gpu加速)
2013/12/23 HTML / CSS
毕业生个人求职信范文分享
2014/01/05 职场文书
四年级数学教学反思
2014/02/02 职场文书
应届大学生自荐书
2014/06/17 职场文书
反四风对照检查材料思想汇报
2014/09/16 职场文书
学校2016年圣诞节活动总结
2016/03/31 职场文书
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
2021/06/03 Python
windows系统安装配置nginx环境
2022/06/28 Servers