浅谈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 str与repr的区别
Mar 23 Python
Python函数可变参数定义及其参数传递方式实例详解
May 25 Python
深入学习Python中的装饰器使用
Jun 20 Python
Python Web编程之WSGI协议简介
Jul 18 Python
Python 限制线程的最大数量的方法(Semaphore)
Feb 22 Python
Django web框架使用url path name详解
Apr 29 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
Jun 21 Python
解决python tkinter界面卡死的问题
Jul 17 Python
python实现的汉诺塔算法示例
Oct 23 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
Apr 22 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
Jun 24 Python
Python中logging日志的四个等级和使用
Nov 17 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实现网站插件机制的方法
2009/11/10 PHP
php页面跳转代码 输入网址跳转到你定义的页面
2013/03/28 PHP
[原创]PHP简单开启curl的方法(测试可行)
2016/01/11 PHP
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
JavaScript中使用Substring删除字符串最后一个字符
2013/11/03 Javascript
JS获取农历日期具体实例
2013/11/14 Javascript
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
2015/04/12 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
2015/08/07 Javascript
JavaScript事件类型中UI事件详解
2016/01/14 Javascript
jQuery插件WebUploader实现文件上传
2016/11/07 Javascript
基于Vue.js实现简单搜索框
2020/03/26 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
10行代码实现微信小程序滑动tab切换
2018/12/28 Javascript
如何用RxJS实现Redux Form
2018/12/29 Javascript
NestJs 静态目录配置详解
2019/03/12 Javascript
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
js new Date()实例测试
2019/10/31 Javascript
JS document对象简单用法完整示例
2020/01/14 Javascript
python3简单实现微信爬虫
2015/04/09 Python
深入解析Python中的集合类型操作符
2015/08/19 Python
使用keras和tensorflow保存为可部署的pb格式
2020/05/25 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
2020/06/30 Python
selenium与xpath之获取指定位置的元素的实现
2021/01/26 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
兼职学生的自我评价
2013/11/24 职场文书
药学专业个人的自我评价
2013/12/31 职场文书
市场部管理制度
2014/02/02 职场文书
中等生评语大全
2014/05/04 职场文书
课外小组活动总结
2014/08/27 职场文书
2014国庆黄金周超市促销活动方案
2014/09/21 职场文书
导游词之山东红叶谷
2019/10/31 职场文书
pytorch 6 batch_train 批训练操作
2021/05/28 Python
python脚本框架webpy的url映射详解
2021/11/20 Python