为什么 python init 重载不支持函数重载

#使用python中的
raw_input()内建函数
下划线:(_)在解释器中有特别的含义,最后一个表达式的值.所以上面的代码执行以后,下划线变量会包含字符串&&& _Hello,world
Python的print语句,与字符串格式运算符(%)结合使用,可实现字符串替换功能,这一点与C语言中的printf函数非常相似.
&&&print "%s is number %d!" % ("Python" ,1)Python is number 1!
%s表示由一个字符串来替换,%d表示由一个整数来替换.另外一个有用的函数是%f,他是浮点数来替换.
加减乘除和取余都是标准运算符.Python有两种除法运算符号,单斜杠表示传统除法,双斜杠用作浮点除法(对结果进行四舍五入).传统除法是指如果两个操作数都是整数的话,他将执行地板除(取比商小的最大整数).
第六种数字类型是decimal,用于十进制浮点数.不过他不是内建类型,你必须先导入decimal模块才能使用这种数值类型.用于需求日益强烈,Python2.4增加了这种类型.&&&1.1&&&1.0001&&&print decimal.Decimal('1.1')&&&1.1
python的可能性使用:
type({})class dicttype([])class list
这是一个很好的python的属性.+----------------------------------------------------------------------------+这是一个学习Python的地方&&&& x=set('abcdef')&&&& y=set('bfdghij')&&&& 'e' in xTrue&&&& x&&&&set['a','b','c','d']&&&& y &&&& set['a','b','c','d']&&&& x - y&&&&set(['a','b','c','d','e','f','b','f','d','g','h','i']+----------------------------------------------------------------------------+Python不支持方法或函数重载,因此你必须要自己保证调用的是你想要的函数或者对象.type()可以帮助你type()返回任意的Python对象的类型,而不局限与标准类型.内建函数type()
阅读(...) 评论()您所在的位置: &
Python入门之你必须了解的语法与类型
Python入门之你必须了解的语法与类型
Python的设计目标之一是让源代码具备高度的可读性。它设计时尽量使用其它语言经常使用的标点符号和英语单词,让源代码整体看起来很整洁美观。
Python的设计目标之一是让源代码具备高度的可读性。它设计时尽量使用其它语言经常使用的标点符号和英语单词,让源代码整体看起来很整洁美观。它不像静态语言如C、Pascal那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和惊喜。
Python开发者有意让违反了缩进规则的程序不能通过编译,以此来强制程序员养成良好的编程习惯。并且在Python语言里,缩进而非花括号或者某种关键字,被用于表示语句块的开始和煺出。增加缩进表示语句块的开始,而减少缩进则表示语句块的煺出。缩进成为了语法的一部分。例如
if&age&&&21: &&&&&print(&你不能I酒。&) &&&&&print(&不^你能I口香糖。&) &print(&@句ifZ句K的外面。&)&
根据PEP的规定,必须使用4个空格来表示每级缩进。使用Tab字符和其它数目的空格虽然都可以编译通过,但不符合编码规范。支持Tab字符和其它数目的空格仅仅是为了兼容很旧的Python程序和某些有问题的编辑器。
语句和控制流
◆ if语句,当条件成立时执行语句块。经常与else,elif(相当于else if)配合使用。
◆ for语句,遍历列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。
◆ while语句,当条件为真时,循环执行语句块。
◆ try语句。与except,finally配合使用处理在程序运行中出现的异常情况。
◆ class语句。用于定义类型。
◆ def语句。用于定义函数和类型的方法。
◆ pass语句。表示此行为空,不执行任何操作。
◆ assert语句。用于程序调试阶段时测试运行条件是否满足。
◆ with语句。Python2.6以后定义的语法,在一个场景中运行语句块。比如,运行语句块前加锁,然后在语句块运行结束后释放它。
◆ yield语句。在迭代器函数内使用,用于返回一个元素。自从Python 2.5版本以后。这个语句变成一个运算符。
Python的表达式写法与C/C++类似。只是在某些写法有所差别。
◆ 主要的算术运算符与C/C++类似。+, -, *, /, //, **, ~, %分别表示加法或者取正、减法或者取负、乘法、除法、整除、乘方、取补、取模。&&, &&表示右移和左移。&, |, ^表示二进制的AND, OR, XOR运算。&, &, ==, !=, &=, &=用于比较两个表达式的值,分别表示大于、小于、等于、不等于、小于等于、大于等于。在这些运算符里面,~, |, ^, &, &&, &&必须应用于整数。
◆ Python使用and, or, not表示逻辑运算。
◆ is, is not用于比较两个变量是否是同一个对象。in, not in用于判断一个对象是否属于另外一个对象。
◆ Python支持&列表推导式&(list comprehension),比如计算0-9的平方和:
&&&&sum(x&*&x&for&x&in&range(10))285&
◆ Python使用lambda表示匿名函数。匿名函数体只能是表达式。比如:
&&&&add=lambda&x,&y&:&x&+&y&&&&add(3,2)5&
◆ Python使用y if cond else x表示条件表达式。意思是当cond为真时,表达式的值为y,否则表达式的值为x。相当于C++和Java里的cond?y:x。
◆ Python区分列表(list)和元组(tuple)两种类型。list的写法是[1,2,3],而tuple的写法是(1,2,3)。可以改变list中的元素,而不能改变tuple。在某些情况下,tuple的括号可以省略。tuple对于赋值语句有特殊的处理。因此,可以同时赋值给多个变量,比如:
&&&&x,&y=1,&2&&
◆ 特别地,可以使用以下这种形式来交换两个变量的值:
&&&&x,&y=y,&x&&
◆ Python使用'(单引号)和&(双引号)来表示字符串。与Perl、Unix Shell语言或者Ruby、Groovy等语言不一样,两种符号作用相同。一般地,如果字符串中出现了双引号,就使用单引号来表示字符串;反之则使用双引号。如果都没有出现,就依个人喜好选择。出现在字符串中的\(反斜杠)被解释为特殊字符,比如\n表示换行符。表达式前加r指示Python不解释字符串中出现的\。这种写法通常用于编写正则表达式或者Windows文件路径。
◆ Python支持列表切割(list slices),可以取得完整列表的一部分。支持切割操作的类型有str, bytes, list, tuple等。它的语法是...[left:right]或者...[left:right:stride]。假定nums变量的值是[1, 3, 5, 7, 8, 13, 20],那么下面几个语句为真:
◆ nums[2:5] == [5, 7, 8] 从下标为2的元素切割到下标为5的元素,但不包含下标为2的元素。
◆ nums[1:] == [3, 5, 7, 8, 13, 20] 切割到最后一个元素。
◆ nums[:-3] == [1, 3, 5, 7] 从最开始的元素一直切割到倒数第3个元素。
◆ nums[:] == [1, 3, 5, 7, 8, 13, 20] 返回所有元素。改变新的列表不会影响到nums。
◆ nums[1:5:2] == [3, 7]
Python的函数支持递归、默认参数值、可变参数,但不支持函数重载。为了增强代码的可读性,可以在函数后书写&文档字符串&(Documentation Strings,或者简称docstrings),用于解释函数的作用、参数的类型与意义、返回值类型与取值范围等。可以使用内置函数help()打印出函数的使用帮助。比如:
&&&&def&randint(a,&b): &&...&&&&&&Return&random&integer&in&range&[a,&b],&including&both&end&points.&&&... &&&&&&help(randint) &&Help&on&function&randint&in&module&__main__: &&& &&randint(a,&b) &&&&&&Return&random&integer&in&range&[a,&b],&including&both&end&points.&
对象的方法
对象的方法是指绑定到对象的函数。调用对象方法的语法是instance.method(arguments)。它等价于调用Class.method(instance, arguments)。当定义对象方法时,必须显式地定义第一个参数为self,用于访问对象的内部数据。self相当于C++, Java里面的this变量。比如:
class&Fish: &&&&&def&eat(self,&food): &&&&&&&&&if&food&is&not&None: &&&&&&&&&&&&&self.hungry=False&& &&f=Fish() &&Fish.eat(f,&&earthworm&) &f.eat(&earthworm&)&
Python认识一些以&__&开始并以&__&结束的特殊方法名,它们用于实现运算符重载和实现多种特殊功能。
Python采用动态类型系统。在编译的时候,Python不会检查对象是否拥有被调用的方法或者属性,而是直至运行时,才做出检查。所以操作对象时可能会抛出异常。不过,虽然Python采用动态类型系统,它同时也是强类型的。Python禁止没有明确定义的操作,比如数字加字符串。
与其它面向对象语言一样,Python允许程序员定义类型。构造一个对象只需要像函数一样调用类型即可,比如,对于前面定义的Fish类型,使用Fish()。类型本身也是特殊类型type的对象(type类型本身也是type对象),这种特殊的设计允许对类型进行反射编程。
Python内置丰富的数据类型。与Java、C++相比,这些数据类型有效地减少代码的长度。下面这个列表简要地描述了Python内置数据类型(适用于Python 3.x):
除了各种数据类型,Python语言还用类型来表示函数、模块、类型本身、对象的方法、编译后的Python代码、运行时信息等等。因此,Python具备很强的动态性。
Python使用与C、Java类似的运算符,支持整数与浮点数的数学运算。同时还支持复数运算与无穷位数(实际受限于计算机的能力)的整数运算。除了求绝对值函数abs()外,大多数数学函数处于math和cmath模块内。前者用于实数运算,而后者用于复数运算。使用时需要先导入它们,比如:
&&&&import&math &&&&&print(math.sin(math.pi/2)) &1.0&
fractions模块用于支持分数运算;decimal模块用于支持高精度的浮点数运算。
Python定义求余运行a % b的值处于开区间[0, b)内,如果b是负数,开区间变为(b, 0]。这是一个很常见的定义方式。不过其实它依赖于整除的定义。为了让方程式:b * (a // b) + a % b = a恒真,整除运行需要向负无穷小方向取值。比如7 // 3的结果是2,而(-7) // 3的结果却是-3。这个算法与其它很多编程语言不一样,需要注意,它们的整除运算会向0的方向取值。
Python允许像数学的常用写法那样连着写两个比较运行符。比如a & b & c与a & b and b & c等价。C++的结果与Python不一样,首先它会先计算a & b,根据两者的大小获得0或者1两个值之一,然后再与c进行比较。
【编辑推荐】
【责任编辑: TEL:(010)】
关于的更多文章
Python是"一种解释型的、面向对象的、带有动态语义的高级程序设
随着云计算、物联网、大数据、移动互联网的大发展,你应该知道这些。
7月的名字叫“流火”!本周出差工作的各位辛苦了,因
程序员的30岁,是个伤不起的现象。你不可能敲一辈子的
Hadoop Summit 2013 大会讲师 PPT 第二季重磅来袭!如
C#经典名著!2006年最受读者喜爱的十大技术开发类图书!也是Wrox红皮书中最畅销的品种之一,从第一版开始就名满天下;其第3版被
51CTO旗下网站2262人阅读
python(8)
Last Update:
1) __class__
2) &__cmp__
3) &__contains__
4) __delattr__
5) &__delitem__
6) &__dict__
7) &__doc__
8) __len__
9) &__repr__
10) __call__
重载此方法的,调用callable返回True,对于类来说,一直是callable的,但对于对象来说,如果没有实现__call__方法,则不是callable的,否则是callable的
11) __dir__
&&&classShape(object):def
__dir__(self):
return [’area’, ’perimeter’, ’location’]
&&&s=Shape()
[’area’, ’perimeter’, ’location’]&
12)__nonzero__
当与 if 进行比较判断时,如果类重载了__nonzero__方法,则会根据该方法来进行判断,否则默认返回True
class MyClass:
def __init__(self,value):
self.mValue = value
def __nonzero__(self):
if self.mValue % 2 :
return False
return True
a1 = MyClass(1)
a2 = MyClass(2)
print &a1 is not None&
#a1为奇数,不输出
print &a2 is not none&
#a2为偶数,此句输出
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:113821次
积分:1583
积分:1583
排名:千里之外
原创:48篇
转载:13篇
评论:13条
(6)(33)(13)(4)(3)(1)(1)

我要回帖

更多关于 python 类重载 的文章

 

随机推荐