浅谈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脚本抓取网络小说来制作自己的阅读器
Aug 20 Python
python 截取 取出一部分的字符串方法
Mar 01 Python
用virtualenv建立多个Python独立虚拟开发环境
Jul 06 Python
Python 中 Virtualenv 和 pip 的简单用法详解
Aug 18 Python
Python爬取当当、京东、亚马逊图书信息代码实例
Dec 09 Python
浅谈Pandas中map, applymap and apply的区别
Apr 10 Python
django传值给模板, 再用JS接收并进行操作的实例
May 28 Python
Python不使用int()函数把字符串转换为数字的方法
Jul 09 Python
Python操作rabbitMQ的示例代码
Mar 19 Python
Docker部署Python爬虫项目的方法步骤
Jan 19 Python
Django celery异步任务实现代码示例
Nov 26 Python
完美处理python与anaconda环境变量的冲突问题
Apr 07 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
Oracle Faq(Oracle的版本)
2006/10/09 PHP
php curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
2011/04/07 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
2013/10/25 PHP
codeigniter教程之多文件上传使用示例
2014/02/11 PHP
php无限级分类实现方法分析
2016/10/19 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
PHP模型Model类封装数据库操作示例
2019/03/14 PHP
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
JS 控件事件小结
2012/10/31 Javascript
Javascript模仿淘宝信用评价实例(附源码)
2015/11/26 Javascript
基于jquery实现省市区三级联动效果
2015/12/25 Javascript
JavaScipt中栈的实现方法
2016/02/17 Javascript
javascript创建cookie、读取cookie
2016/03/31 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
jQuery插件实现可输入和自动匹配的下拉框
2016/10/24 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
2016/11/22 Javascript
基于Vue如何封装分页组件
2016/12/16 Javascript
详解Vue.js动态绑定class
2016/12/20 Javascript
解决nodejs的npm命令无反应的问题
2018/05/17 NodeJs
vue2.0父子组件间传递数据的方法
2018/08/16 Javascript
[49:05]Newbee vs TNC 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
pycharm 使用心得(六)进行简单的数据库管理
2014/06/06 Python
python数据库编程 Mysql实现通讯录
2020/03/27 Python
Python控制台实现交互式环境执行
2020/06/09 Python
Crocs卡骆驰洞洞鞋日本官方网站:Crocs日本
2016/08/25 全球购物
教育专业个人求职信
2013/12/02 职场文书
中学生爱国演讲稿
2013/12/31 职场文书
入职担保书怎么写
2014/05/12 职场文书
表彰大会策划方案
2014/05/13 职场文书
新农村建设标语
2014/06/24 职场文书
办理房产证委托书
2014/09/18 职场文书
2016教师年度考核评语大全
2015/12/01 职场文书
Python带你从浅入深探究Tuple(基础篇)
2021/05/15 Python
Pytorch 如何实现常用正则化
2021/05/27 Python
Java中的继承、多态以及封装
2022/04/11 Java/Android
Python实现对齐打印 format函数的用法
2022/04/28 Python