小甲鱼第52讲:像极客一样去思考
2015-11-16 16:47
417 查看
以下代码打印什么内容?
0.
当然是打印函数的类型,由于什么都没有返回,也就是”NoneType“
1.
排除法,没有u开题,所以不是”unicode“,不是整型,也不是字符串,那就是”混合型“
2.
起初我以为是NoneType,结果发现是function,结果help(lambda)发现这么一句话:
the expression ``lambda arguments: expression`` yields a function object.
也就是无论lambda如何定义,返回的都是一个函数对象
3.
列表a的长度就是数最外面的逗号分隔的东西有几个,数数大学有7个,分别是3个整型数字、字符串一个、元祖一个、空列表一个加上空值一个。
4.
首先,小甲鱼没有注意缩进问题,在类A的初始化函数那里(如果我没有理解错误的话)。
如果是这样的话,那么b作为类B的实例对象,应该与A无关呀,不然,怎么来的leiA的属性v1?应该抛出异常吧?而且还有一个语法错误在print语句那里,应该是%(b.v1, b.v2)不然就是只打印前者的意思了,除非py3改了语法,因为我用的是py2哈。
5.
首先,A类在定义的时候是需要传入参数x的,所以,a=A()会报错,而且定义的时候x=666这个常数十无意义的,因为x只是参数,只有当调用A的时候,传入的参数会覆盖x,所以666这个常数的赋值时无意义的,结果只会是888.
6.
好吧,小甲鱼累了,里面的代码已经错别字的惨不忍睹,小甲鱼真的是千年的劳模,在此容许在下烧一炷香,实际上肯定是打印1 1 2 3 5,首先,set是一个集合,里面一般是列表这样的可迭代对象;其次,filter(function or None, sequence)这个函数返回”function“为真的序列。这里就是返回所有的values列表中的元素,其中元素之间以空格隔开。
7.
map函数用于讲参数列表”values“里面的每一个元素作为参数”transform“函数的参数最终返回一个列表,因此返回1 1 4 9 25
8.
首先,__dict__用于定义类属性以及对于的值,类属性以及对应的值在类内通过字典方式存储,因此a.y为50,而一共有两个属性,分别是y和x;因此结果为52.
9.
执行的是函数本身,因此打印__main__,当模块被调用的时候,__name__==模块名称
10.
打印字典的长度3,首先字典的键值对分别是addone函数的参数和参数出现的次数,因此长度就是3个不同的国家。
11.
由于字段中的元素重复键的赋值会被覆盖,因此1会被重新复制为3,结果是result=3+2=5
12.
dostuff里面有两个参数,一个是param1='apples',另外一个带*的参数是一个序列类型的参数,*params2=('bananas', 'cherry', 'dates'),因此是第二个参数是一个元组类型。
13.
首先,getattr实际上返回的是实例对象属性x的值b=1+2+3=6,setattr是重新定义实例对象的属性x的值为7,因此结果为7.
14.
结果为5+5=10,实际上copy()函数只是将索引指向了dict1而已,dict1变了,那么dict2也会跟着变,是一种浅拷贝方式,没有断根的拷贝。与传统意义上的克隆不同,要知道克隆出来的可是单独的个体。
15.
调用copy模块的deepcopy()函数才能达到传统意义上的克隆,结果是result=5+1=6
0.
>>> def func(): pass >>> print(type(func()))
当然是打印函数的类型,由于什么都没有返回,也就是”NoneType“
1.
>>> print(type(1J))
排除法,没有u开题,所以不是”unicode“,不是整型,也不是字符串,那就是”混合型“
2.
>>> print(type(lambda:None))
起初我以为是NoneType,结果发现是function,结果help(lambda)发现这么一句话:
the expression ``lambda arguments: expression`` yields a function object.
也就是无论lambda如何定义,返回的都是一个函数对象
3.
>>> a = [1, 2, 3, "FishC", ('a', 'b', 'c'), [], None] >>> print(len(a))
列表a的长度就是数最外面的逗号分隔的东西有几个,数数大学有7个,分别是3个整型数字、字符串一个、元祖一个、空列表一个加上空值一个。
4.
class A: def __init__(self, x): x = x + 1 self.v1 = x class B(A): def __init__(self, x): x = x + 1 self.v2 = x >>> b = B(8) >>> print("%d %d" % b.v1, b.v2)
首先,小甲鱼没有注意缩进问题,在类A的初始化函数那里(如果我没有理解错误的话)。
如果是这样的话,那么b作为类B的实例对象,应该与A无关呀,不然,怎么来的leiA的属性v1?应该抛出异常吧?而且还有一个语法错误在print语句那里,应该是%(b.v1, b.v2)不然就是只打印前者的意思了,除非py3改了语法,因为我用的是py2哈。
5.
class A: def __init__(self, x): self.x = x x = 666 >>> a = A() >>> a = A(888) >>> a.x
首先,A类在定义的时候是需要传入参数x的,所以,a=A()会报错,而且定义的时候x=666这个常数十无意义的,因为x只是参数,只有当调用A的时候,传入的参数会覆盖x,所以666这个常数的赋值时无意义的,结果只会是888.
6.
values = [1, 1, 2, 3, 5] nums = set(values) def check(num): if num in nums: return True else: return False for i in filter(checkit, values): print(i, end=' ')
好吧,小甲鱼累了,里面的代码已经错别字的惨不忍睹,小甲鱼真的是千年的劳模,在此容许在下烧一炷香,实际上肯定是打印1 1 2 3 5,首先,set是一个集合,里面一般是列表这样的可迭代对象;其次,filter(function or None, sequence)这个函数返回”function“为真的序列。这里就是返回所有的values列表中的元素,其中元素之间以空格隔开。
7.
values = [1, 1, 2, 3, 5] def transform(num): return num ** 2 for i in map(transform, values): print(i, end=' ')
map函数用于讲参数列表”values“里面的每一个元素作为参数”transform“函数的参数最终返回一个列表,因此返回1 1 4 9 25
8.
class A: def __init__(self, x): self.x = x a = A(100) a.__dict__['y'] = 50 print(a.y + len(a.__dict__))
首先,__dict__用于定义类属性以及对于的值,类属性以及对应的值在类内通过字典方式存储,因此a.y为50,而一共有两个属性,分别是y和x;因此结果为52.
9.
class A: def __init__(self): pass def get(self): print(__name__) >>> a = A() >>> a.get()
执行的是函数本身,因此打印__main__,当模块被调用的时候,__name__==模块名称
10.
country_counter = {} def addone(country): if country in country_counter: country_counter[country] += 1 else: country_counter[country] = 1 addone('China') addone('Japan') addone('China') addone("American") print(len(country_counter))
打印字典的长度3,首先字典的键值对分别是addone函数的参数和参数出现的次数,因此长度就是3个不同的国家。
11.
dict1 = {} dict1[1] = 1 dict1['1'] = 2 dict1[1.0] = 3 result = 0 for each in dict1: result += dict1[each] print(result)
由于字段中的元素重复键的赋值会被覆盖,因此1会被重新复制为3,结果是result=3+2=5
12.
def dostuff(param1, *param2): print type(param2) dostuff('apples', 'bananas', 'cherry', 'dates')
dostuff里面有两个参数,一个是param1='apples',另外一个带*的参数是一个序列类型的参数,*params2=('bananas', 'cherry', 'dates'),因此是第二个参数是一个元组类型。
13.
class A: def __init__(self, a, b, c): self.x = a + b + c a = A(1,2,3) b = getattr(a, 'x') setattr(a, 'x', b+1) print a.x
首先,getattr实际上返回的是实例对象属性x的值b=1+2+3=6,setattr是重新定义实例对象的属性x的值为7,因此结果为7.
14.
list1 = [1, 2] list2 = [3, 4] dict1 = {'1':list1, '2':list2} dict2 = dict1.copy() dict1['1'][0] = 5 result = dict1['1'][0] + dict2['1'][0] print(result)
结果为5+5=10,实际上copy()函数只是将索引指向了dict1而已,dict1变了,那么dict2也会跟着变,是一种浅拷贝方式,没有断根的拷贝。与传统意义上的克隆不同,要知道克隆出来的可是单独的个体。
15.
import copy list1 = [1, 2] list2 = [3, 4] dict1 = {'1':list1, '2':list2} dict2 = copy.deepcopy(dict1) dict1['1'][0] = 5 result = dict1['1'][0] + dict2['1'][0] print(result)
调用copy模块的deepcopy()函数才能达到传统意义上的克隆,结果是result=5+1=6
相关文章推荐
- java加密解密简单列子
- 事务并发、事务隔离级别
- Ubuntu 14.04+Cuda 7.0+Opencv2.4.10+Cudnn+(PNG++)+Torch7配置
- 数据结构实践—— 二叉树算法验证(中序线索化二叉树的算法验证)
- ASP.NET web 网上注册及投票
- android 加载大图长图失真或者不显示。
- 用matlab 保存带标记图像、图片的方法总结
- hdu--1242
- mfc tab控件使用
- Winnet Api 使用
- IOS6学习笔记(三)
- 几个很相近的数组函数
- 【转】Mybatis 3.1中 Mapper XML 文件 的学习详解
- Remoting和Webservice的区别
- php加密:3DES
- QStringListModel
- 不可变服务器和无核化unikernel ( by quqi99 )
- 网站每日签到功能设计 hibernate数据层框架
- nginx-0.1.0文件分析1:ngx_daemon.c
- ubuntu14.4安装linux问题