python类的声明
A. 为什么python不需要声明函数类型
和不用声明变量一样,Python不用去声明函数的返回类型,是由于其“若类型”的语言特性决定的。
在其他语言中,例如C/C++语言中在存储一个数据之前,都需要在内存中给这个数据开辟一个固定的内存空间,并给这个类型空间指定一个唯一的 id(变量名),然后才把要存储的数据放到这个变量名对于的内存空间中。而Python的做法,是`以数据为中心`,上来就把要存储的数据放到内存,然后再去用一个变量名`引用`这个数据。
B. python3中一定要声明参数类型吗
不是一定要。
团队开发,通常会要求这么做,因为你写的函数,其他的同事需要调用,
C. 能具体说一下吗
变量是保存存储值的内存位置。也就是说,当创建一个变量时,可以在内存中保留一些空间。
基于变量的数据类型,解释器分配内存并决定可以存储在保留的存储器中的内容。 因此,通过为变量分配不同的数据类型,可以在这些变量中存储的数据类型为整数,小数或字符等等。
将值分配给变量
在Python中,变量不需要明确的声明类型来保留内存空间。当向变量分配值时,Python会自动发出声明。 等号(=)用于为变量赋值。
=运算符左侧的操作数是变量的名称,而=运算符右侧的操作数是将在存储在变量中的值。 例如 -
#!/usr/bin/python3counter = 100 # 一个整型数miles = 999.99 # 一个浮点数name = "Maxsu" # 一个字符串site_url = "http://www.yii.com" # 一个字符串print (counter)print (miles)print (name)print (site_url)Python
这里,100,999.99和“Maxsu”分别是分配给counter,miles和name变量的值。执行上面代码将产生以下结果 -
100
999.99
Maxsu
http://www.yii.comShell
多重赋值
Python允许同时为多个变量分配单个值。
例如 -
a = b = c = 1Python
这里,创建一个整数对象,其值为1,并且所有三个变量都分配给相同的内存位置。还可以将多个对象分配给多个变量。 例如 -
a, b, c = 10, 20, "maxsu"Python
这里,将两个值为10和20的整数对象分别分配给变量a和b,并将一个值为“maxsu”的字符串对象分配给变量c。
标准数据类型
存储在内存中的数据可以是多种类型。 例如,一个人的年龄可存储为一个数字值,他的地址被存储为字母数字字符串。 Python具有各种标准数据类型,用于定义可能的操作以及每个标准数据类型的存储方法。
Python有五种标准数据类型 -
1.数字
2.字符串
3.列表
4.元组
5.字典
- var1 = 10var2 = 20Python
- del var1[,var2[,var3[....,varN]]]]Python
- del vardel var_a, var_bPython
int(有符号整数)
float(浮点实值)
complex(复数)
- #!/usr/bin/python3#coding=utf-8# save file: variable_types_str1.pystr = 'yii.com'print ('str = ', str) # Prints complete stringprint ('str[0] = ',str[0]) # Prints first character of the stringprint ('str[2:5] = ',str[2:5]) # Prints characters starting from 3rd to 5thprint ('str[2:] = ',str[2:]) # Prints string starting from 3rd characterprint ('str[-1] = ',str[-1]) # 最后一个字符,结果为:'!'print ('str * 2 = ',str * 2) # Prints string two timesprint ('str + "TEST" = ',str + "TEST") # Prints concatenated stringPython
- F:worksppython>python variable_types_str1.py
- str = yii.com
- str[0] = y
- str[2:5] = iba
- str[2:] = i.com
- str[-1] = m
- str * 2 = yii.comyii.com
- str + "TEST" = yii.comTEST
- F:worksppython>Shell
- #!/usr/bin/python3#coding=utf-8# save file: variable_types_str1.pylist = [ 'yes', 'no', 786 , 2.23, 'minsu', 70.2 ]tinylist = [100, 'maxsu']print ('list = ', list) # Prints complete listprint ('list[0] = ',list[0]) # Prints first element of the listprint ('list[1:3] = ',list[1:3]) # Prints elements starting from 2nd till 3rd print ('list[2:] = ',list[2:]) # Prints elements starting from 3rd elementprint ('list[-3:-1] = ',list[-3:-1]) print ('tinylist * 2 = ',tinylist * 2) # Prints list two timesprint ('list + tinylist = ', list + tinylist) # Prints concatenated listsPython
- F:worksppython>python variable_types_list.py
- list = ['yes', 'no', 786, 2.23, 'minsu', 70.2]
- list[0] = yes
- list[1:3] = ['no', 786]
- list[2:] = [786, 2.23, 'minsu', 70.2]
- list[-3:-1] = [2.23, 'minsu']
- tinylist * 2 = [100, 'maxsu', 100, 'maxsu']
- list + tinylist = ['yes', 'no', 786, 2.23, 'minsu', 70.2, 100, 'maxsu']
- F:worksppython>Shell
- #!/usr/bin/python3#coding=utf-8# save file : variable_types_tuple.pytuple = ( 'maxsu', 786 , 2.23, 'yii', 70.2 )tinytuple = (999.0, 'maxsu')# tuple[1] = 'new item value' 不能这样赋值print ('tuple = ', tuple) # Prints complete tupleprint ('tuple[0] = ', tuple[0]) # Prints first element of the tupleprint ('tuple[1:3] = ', tuple[1:3]) # Prints elements starting from 2nd till 3rd print ('tuple[-3:-1] = ', tuple[-3:-1]) # 输出结果是什么?print ('tuple[2:] = ', tuple[2:]) # Prints elements starting from 3rd elementprint ('tinytuple * 2 = ',tinytuple * 2) # Prints tuple two timesprint ('tuple + tinytuple = ', tuple + tinytuple) # Prints concatenated tuplePython
- F:worksppython>python variable_types_tuple.py
- tuple = ('maxsu', 786, 2.23, 'yii', 70.2)
- tuple[0] = maxsu
- tuple[1:3] = (786, 2.23)
- tuple[-3:-1] = (2.23, 'yii')
- tuple[2:] = (2.23, 'yii', 70.2)
- tinytuple * 2 = (999.0, 'maxsu', 999.0, 'maxsu')
- tuple + tinytuple = ('maxsu', 786, 2.23, 'yii', 70.2, 999.0, 'maxsu')
- F:worksppython>Shell
- #!/usr/bin/python3tuple = ( 'abcd', 786 , 2.23, 'john', 70.2 )list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]tuple[2] = 1000 # 无法更新值,程序出错list[2] = 1000 # 有效的更新,合法Python
- #!/usr/bin/python3#coding=utf-8# save file : variable_types_dict.pydict = {}dict['one'] = "This is one"dict[2] = "This is my"tinydict = {'name': 'maxsu', 'code' : 1024, 'dept':'IT Dev'}print ("dict['one'] = ", dict['one']) # Prints value for 'one' keyprint ('dict[2] = ', dict[2]) # Prints value for 2 keyprint ('tinydict = ', tinydict) # Prints complete dictionaryprint ('tinydict.keys() = ', tinydict.keys()) # Prints all the keysprint ('tinydict.values() = ', tinydict.values()) # Prints all the valuesPython
- F:worksppython>python variable_types_dict.py
- dict['one'] = This is one
- dict[2] = This is my
- tinydict = {'name': 'maxsu', 'code': 1024, 'dept': 'IT Dev'}
- tinydict.keys() = dict_keys(['name', 'code', 'dept'])
- tinydict.values() = dict_values(['maxsu', 1024, 'IT Dev'])Shell
1.Python数字
数字数据类型存储数字值。当为其分配值时,将创建数字对象。 例如 -
可以使用del语句删除对数字对象的引用。del语句的语法是 -
可以使用del语句删除单个对象或多个对象。
例如 -
Python支持三种不同的数值类型 -
Python3中的所有整数都表示为长整数。 因此,长整数没有单独的数字类型。
例子
以下是一些数字示例 -
int
float
complex
10 0.0 3.14j
100 15.20 45.j
-786 -21.9 9.322e-36j
080 32.3+e18 .876j
-0490 -90. -.6545+0J
-0x260 -32.54e100 3e+26J
0x69 70.2-E12 4.53e-7j
复数是由x + yj表示的有序对的实数浮点数组成,其中x和y是实数,j是虚数单位。
2.Python字符串
Python中的字符串被标识为在引号中表示的连续字符集。Python允许双引号或双引号。 可以使用片段运算符([]和[:])来获取字符串的子集(子字符串),其索引从字符串开始处的索引0开始,并且以-1表示字符串中的最后一个字符。
加号(+)是字符串连接运算符,星号(*)是重复运算符。例如 -
将上面代码保存到variable_types_str1.py文件中,执行将产生以下结果 -
2.Python列表
列表是Python复合数据类型中最多功能的。 一个列表包含用逗号分隔并括在方括号([])中的项目。在某种程度上,列表类似于C语言中的数组。它们之间的区别之一是Python列表的所有项可以是不同的数据类型,而C语言中的数组只能是同种类型。
存储在列表中的值可以使用切片运算符([]和[])来访问,索引从列表开头的0开始,并且以-1表示列表中的最后一个项目。 加号(+)是列表连接运算符,星号(*)是重复运算符。例如 -
将上面代码保存到variable_types_str1.py文件中,执行将产生以下结果 -
3.Python元组
元组是与列表非常类似的另一个序列数据类型。元组是由多个值以逗号分隔。然而,与列表不同,元组被括在小括号内(())。
列表和元组之间的主要区别是 - 列表括在括号([])中,列表中的元素和大小可以更改,而元组括在括号(())中,无法更新。元组可以被认为是只读列表。 例如 -
将上面代码保存到variable_types_tuple.py文件中,执行将产生以下结果 -
以下代码对于元组无效,因为尝试更新元组,但是元组是不允许更新的。类似的情况可能与列表 -
Python字典
Python的字典是一种哈希表类型。它们像Perl中发现的关联数组或散列一样工作,由键值对组成。字典键几乎可以是任何Python数据类型,但通常为了方便使用数字或字符串。另一方面,值可以是任意任意的Python对象。
字典由大括号({})括起来,可以使用方括号([])分配和访问值。例如 -
将上面代码保存到variable_types_dict.py文件中,执行将产生以下结果 -
字典中的元素没有顺序的概念。但是说这些元素是“乱序”是不正确的; 它们是无序的。
数据类型转换
有时,可能需要在内置类型之间执行转换。要在类型之间进行转换,只需使用类型名称作为函数即可。
有以下几种内置函数用于执行从一种数据类型到另一种数据类型的转换。这些函数返回一个表示转换值的新对象。它们分别如下所示 -
编号
函数
描述
1 int(x [,base]) 将x转换为整数。如果x是字符串,则要base指定基数。
2 float(x) 将x转换为浮点数。
3 complex(real [,imag]) 创建一个复数。
4 str(x) 将对象x转换为字符串表示形式。
5 repr(x) 将对象x转换为表达式字符串。
6 eval(str) 评估求值一个字符串并返回一个对象。
7 tuple(s) 将s转换为元组。
8 list(s) 将s转换为列表。
9 set(s) 将s转换为集合。
10 dict(d) 创建一个字典,d必须是(key,value)元组的序列
11 frozenset(s) 将s转换为冻结集
12 chr(x) 将整数x转换为字符
13 unichr(x) 将整数x转换为Unicode字符。
14 ord(x) 将单个字符x转换为其整数值。
15 hex(x) 将整数x转换为十六进制字符串。
16 oct(x) 将整数x转换为八进制字符串。
D. Python里有一个类A 声明一个实例的时候 a = A.A() 和a = A() 有什么区别 多谢!
A.A()是不对的
class A(): pass
a = A,a就等于这个明缓察类定义
a = A(),a就等于这个类的一个实例
有什么问题可以自己用python的解析器自哪培己试试啊
赋值以后直接输出a就知道激茄它是什么了
想知道类型就用type(a)
E. Python中类定义的问题
A1:参数self代表实例本身,例如: A=FooClass(),那么self就代表A,类函数中,self是必需的
A2:__class__获得已知对象的类,任何对象都有这个属性,__name__取得类名
A3:version是类成员变量,实例化后是实例变量,类函数获得实例变量需要带上实例本身,这个其实我也很难解释得很透彻,可以大概讲一下
version = 0.1 这里在实例化之前就已经生成了
而__init__(self,nm='Louis wu'):这里的nm变量是在实例化的时候生成的
在类方法中访问version和nm的方式是一样的,self.version和self.nm
但是version在类没有实例化的情况下也是可以访问的,因为它在实例化之前就已经声明了
你可以尝试
print FooClass.version 是可以得到version的值的
但是FooClass.nm是不可以的,必须是实例化之后才生成这个变量,FooClass().nm就可以访问到了
F. python的模块和类有什么区别
python模块是:
自我包含并且有组织的代码片段为模块。
表现形式为:写的代码保存为文件。这个文件就是一个模块。sample.py 其中文件名smaple为模块名字。
python中的类
类(Class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例 。类变量:
类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。数据成员:类变量或者实
例变量, 用于处理类及其实例对象的相关的数据。方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程
叫方法的覆盖(override),也称为方法的重写。局部变量:定义在方法中的变量,只作用于当前实例的类。实例变量:在类的声明中,
属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。继承:即一个派生类
(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设
计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。实例化:创建一个类的实
例,类的具体对象。方法:类中定义的函数。对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
推荐学习《python教程》。
G. python中通过什么声明该属性为私有,不能在类地外直接访问
在Python中,通过在属性名称前面添加两个下划线(__)来声明该属性为私有属性。例如:
class MyClass:
def __init__(self):
self.__private_attribute = 0
def set_private_attribute(self, value):
self.__private_attribute = value
def get_private_attribute(self):
return self.__private_attribute
-----------------------------------end----------------------------------
在这个例子中,__private_attribute 属性是私有属性,无法在类外部直接访问。你只能通过 set_private_attribute 和 get_private_attribute 方法来访问它。
在Python中,私有属性不能直接访问,但是它们可以被访问。如果你真的想要阻止类外部的访问,可以将属性名称改为一个不常用的名称,比如以一个下划线开头(例如,_private_attribute)。这样做会提醒其他程序员这个属性是私有的,但是并不会阻止类外部的访问。
还有其他问题吗?
H. python类的定义与使用是什么
类Class:用来描述具体相同的属性和方法的对象的集合。定义了该集合中每个对象所共有的属性和方法。对象是类的示例。
类定义完成时(正常退出),就创建了一个 类对象。基本上它是对类定义创建的命名空间进行了一个包装;我们在下一节进一步学习类对象的知识。原始的局部作用域(类定义引入之前生效的那个)得到恢复,类对象在这里绑定到类定义头部的类名(例子中是 ClassName )。
基本语法
Python的设计目标之一是让代码具备高度的可阅读性。它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观。它不像其他的静态语言如C、Pascal那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和意外。
以上内容参考:网络-Python
I. python可以不加声明就使用变量
是的,Python允许在程序中使用未声明的变量。但是,这并不是一个好的编程实践,因为在使用未声明的变量时,可能会导致一些问题。例如,如果你误解了变量的名称或类型,那么这可能会导致程序出错。因此,最好还是声明变量并给它们赋初值。
J. python之为什么类中函数的变量声明要加self
lass A:
def go(self):
self.one= 'sdf'
def go1(self):
print self.one
a = A()
a.go()
a.go1()
sdf
==加了self,以后,这个变量就变成了全局变量,在类中的其他函数中也可以调用。