浅谈python新手中常见的疑惑及解答

作者:jingxian 时间:2022-06-23 18:45:40 

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,解答疑惑
0
投稿

猜你喜欢

  • asp如何显示自定义随机信息?

    2010-06-08 09:39:00
  • 互联网产品设计师职业生涯

    2009-04-20 20:41:00
  • 历数Firefox2.0对XML处理的改进

    2007-11-27 12:41:00
  • AJAX:如何处理书签和后退按钮

    2008-03-21 18:44:00
  • js求一组数中的最大数

    2008-04-10 12:00:00
  • golang操作mongodb的方法

    2023-09-15 03:49:24
  • 也谈access数据库的防下载保护

    2007-08-28 13:01:00
  • http状态码一览表以及HTTP响应的返回头信息

    2010-03-31 14:45:00
  • DW表格应用之细线框的制作

    2008-02-03 19:00:00
  • asp如何在约定时间显示特定的提示信息?

    2010-06-28 16:52:00
  • 如何编写TOP10之类的排行榜?

    2009-11-07 18:45:00
  • Python操作Excel把数据分给sheet

    2023-08-07 17:03:53
  • python并发编程之多进程、多线程、异步和协程详解

    2021-12-10 00:20:35
  • MySQL 索引详解

    2010-01-20 09:39:00
  • 微软工程师讲解SQL server阻塞

    2008-01-05 14:02:00
  • python判断一个数是否能被另一个整数整除的实例

    2021-02-06 13:25:42
  • 如何利用Python实现简单C++程序范围分析

    2022-07-19 00:32:48
  • Frontpage2003的怪bug,自动添加“../”的父级目录

    2007-09-30 13:30:00
  • 下载 Firefox 3 中文版/英文版

    2008-06-19 13:27:00
  • PHP实现二维数组中的查找算法小结

    2023-09-08 05:08:24
  • asp之家 网络编程 m.aspxhome.com