浅谈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进程管理工具supervisor的安装与使用教程
Sep 05 Python
Python语言描述机器学习之Logistic回归算法
Dec 21 Python
用tensorflow实现弹性网络回归算法
Jan 09 Python
pandas获取groupby分组里最大值所在的行方法
Apr 20 Python
Ubuntu下使用python读取doc和docx文档的内容方法
May 08 Python
解读python如何实现决策树算法
Oct 11 Python
django 外键model的互相读取方法
Dec 15 Python
python linecache 处理固定格式文本数据的方法
Jan 08 Python
Python设计模式之职责链模式原理与用法实例分析
Jan 11 Python
django框架CSRF防护原理与用法分析
Jul 22 Python
如何基于python实现画不同品种的樱花树
Jan 03 Python
为什么python比较流行
Jun 19 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中{}大括号是什么意思
2013/12/01 PHP
dojo 之基础篇(二)之从服务器读取数据
2007/03/24 Javascript
iis6+javascript Add an Extension File
2007/06/13 Javascript
js获取div高度的代码
2008/08/09 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
2013/06/25 Javascript
javascript 树形导航菜单实例代码
2013/08/13 Javascript
jQuery固定元素插件scrolltofixed使用指南
2015/04/21 Javascript
在其他地方你学不到的jQuery小贴士和技巧(欢迎收藏)
2016/01/20 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
2016/05/03 Javascript
jQuery链式调用与show知识浅析
2016/05/11 Javascript
js代码延迟一定时间后执行一个函数的实例
2017/02/15 Javascript
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
vue 微信授权登录解决方案
2018/04/10 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
2019/05/07 Javascript
WebSocket的简单介绍及应用
2019/05/23 Javascript
如何在项目中使用log4.js的方法步骤
2019/07/16 Javascript
Nuxt使用Vuex的方法示例
2019/09/06 Javascript
Nodejs实现WebSocket代码实例
2020/05/19 NodeJs
antd design table更改某行数据的样式操作
2020/10/31 Javascript
python中的多线程实例教程
2014/08/27 Python
低版本中Python除法运算小技巧
2015/04/05 Python
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
浅谈python连续赋值可能引发的错误
2018/11/10 Python
Python实现对adb命令封装
2020/03/06 Python
tensorflow pb to tflite 精度下降详解
2020/05/25 Python
python与c语言的语法有哪些不一样的
2020/09/13 Python
美国体育用品商店:Paragon Sports
2017/10/08 全球购物
以色列的身体护理及家居香薰品牌:Sabon NYC
2018/02/23 全球购物
Java程序员面试90题
2013/10/19 面试题
环境科学专业大学生自荐信格式
2013/09/21 职场文书
社团活动策划书范文
2014/01/09 职场文书
《富饶的西沙群岛》教学反思
2014/04/09 职场文书
详解SQL的窗口函数
2022/04/21 Oracle
使用CSS实现音波加载效果
2023/05/07 HTML / CSS