1、Python2.x与3.x的input区别
input与python3不同,在python2.7中分为input()与raw_input()
其中input()返回的是int/float类型数据,输入时可以是1+2,返回3;但如果在input()下输入"one",则同样会返回string类型
而raw_input()返回是改行的string类型,输入是one,返回"one"
而python3中统一是input(),返回都是string类型的数据,如果要获取int,则需要进行类型转换,如:
int(input("Input a number:"))
2、形参的各种写法
【VarArgs参数】定义函数是,当我们命名一个带(*)的参数,则会收集一个叫’param’ 的列表;当我们命名一个带(**)的参数,则会收集一个叫’param’ 的字典,如下:
def total(initial=5, *numbers, **keywords):
#block
total(10, 1, 2, 3, vegetables=50, fruits=100)
#结果:initial=10;列表numbers(1,2,3);字典kewords='vegetables':50, kewords='fruits':100
3、Python中的路径表示方法
'\'是转译符,'\\'与'/‘都可以分隔路径
#当前目录下打开txt
f = open('data.txt', 'w')
#父目录下打开txt
f = open('../data.txt', 'w')
#子目录下打开txt
f = open('mytext/data.txt', 'w')
#绝对路径写法
4、Python 中_X,__XX,__XX__的含义
Python中没有真正的私有属性或方法,可以在你想声明为私有的方法和属性前加上单下划线,以提示该属性和方法不应在外部调用.如果真的调用了也不会出错,但不符合规范.
#! /usr/bin/python def singleton(cls):
_instance = {} # 不建议外部调用
def _singleton(*args, **kargs):
if cls not in _instance:
_instance[cls] = cls(*args, **kargs)
return _instance[cls]
return _singleton @singleton
class A(object):
a = 1
def __init__(self, x = 0):
self.x = x a1 = A(2)
a2 = A(3) print id(a1)
print id(a2)
print a1.x
print a2.x
双下划线开头,是为了不让子类重写该属性方法.通过类的实例化时自动转换,在类中的双下划线开头的属性方法前加上”_类名”实现.
#! /usr/bin/python
# -*- coding: utf-8 -*- class A(object): def __init__(self, x):
self.__a = 2
self.x = x def __b(self):
self.x = 3 a = A(2)
# 会报错,"AttributeError: 'A' object has no attribute '__a'"
# print a.x, a.__a
print a.x, a._A__a
a._A__b()
print a.x
__xx__为Python内建属性方法,最好不要在外部调用