Python学习笔记一

admin 2017/11/07 17:43:35 915

Python中的输入输出

input()print()

例子:

  1. name=input()
  2. print(name)
数据类型

整形、浮点型、字符串、布尔型、list(列表类型)、tuple(元组类型)、dict(字典类型)、set类型

转义字符用\同php。当有很多需要转义时,要加入很多\,Python的简便方式使用r’’,单引号中的字符串默认不转义。当需要多行换行书写代码,使用’’’…’’’三个引号来包含内容。三个引号前面也可以加r。

例子:

  1. print('''line1
  2. line2
  3. line3''')

空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。整形、浮点型、字符串同PHP。

list列表类型

list列表类型,列表是一个有序集合,类似于PHP的数组,访问列表元素通过下标访问,向列表追加元素使用append

例子:

  1. x = ['hx','hx','sss']
  2. x.append('ll')
  3. print(x) //['hx', 'hx', 'sss', 'll']
  4. x[0] //hx
  5. x[-1] //ll
  6. x.pop() //删除末尾元素ll,['hx', 'hx', 'sss']
  7. x.pop(1) //删除索引为1的元素['hx', 'sss']
  8. x.insert(1,'dd') //将元素dd添加到索引为1的位置 ['hx','dd','sss']
tuple(元组类型)

和列表类型类似,但是一旦初始化元组,就不能改变其中的内容了。改变会报错的.

例子:

  1. t = (1,2)
  2. t[0]=2 //会报错
  3. print(t) //(1,2)
  4. x = (1,) //定义一个元素的元组
  5. v = (1,2,['x','y'])
  6. v[2][0]='d'
  7. print(v) //(1,2,['d','y'])
  8. //因为元组的三个元素为list本身类型没变,所以第三个元素内部数据改变是可以的,但是不能把第三个数据换成其他类型的数据
dict(字典类型)

key-value结构,具有极快的查找速度,类似于js的对象

例子:

  1. >>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
  2. >>> d['Michael']
  3. 95
  4. 通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value
  5. >>> d.get('Thomas')
  6. >>> d.get('Thomas', -1)
  7. -1
  8. 要删除一个key,用pop(key)方法,对应的value也会从dict中删除:
  9. >>> d.pop('Bob')
  10. 75
  11. >>> d
  12. {'Michael': 95, 'Tracy': 85}

和list比较,dict有以下几个特点:
查找和插入的速度极快,不会随着key的增加而变慢;
需要占用大量的内存,内存浪费多。
而list相反:
查找和插入的时间随着元素的增加而增加;
占用空间小,浪费内存很少。
所以,dict是用空间来换取时间的一种方法。
dict的key必须是不可变对象。

set类型

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

例子:

  1. >>> s = set([1, 1, 2, 2, 3, 3])
  2. >>> s
  3. {1, 2, 3}
  4. set中添加key
  5. >>> s.add(4)
  6. >>> s
  7. {1, 2, 3, 4}
  8. >>> s.add(4)
  9. >>> s
  10. {1, 2, 3, 4}
  11. 删除set中的key
  12. >>> s.remove(4)
  13. >>> s
  14. {1, 2, 3}
  15. set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:
  16. >>> s1 = set([1, 2, 3])
  17. >>> s2 = set([2, 3, 4])
  18. >>> s1 & s2
  19. {2, 3}
  20. >>> s1 | s2
  21. {1, 2, 3, 4}

在Python中,对于不可变对象,调用对象的任何方法,都不会改变对象本身,比如:整形、浮点型、字符串、tuple等。

例子:

  1. >>> x = 'abc'
  2. >>> x.replace('a', 'A')
  3. 'Abc'
  4. >>> x
  5. 'abc'
  6. 虽然使用replace函数替换了a,但是x本身没有变,可以将替换后的值赋给另外一个变量,这样保证了不可变对象永远不变
字符串转字节

使用b’’,如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes。

例子:

  1. x=b'ABC
格式化输出

同c语言,使用%占位符

例子:

  1. print('hello %s ,your id is %d' % ('hx',10))
  2. //当要表示%时,再加一个%转义,当只有一个值时,%后面的括号可以省略.
条件判断
  1. if 条件:
  2. 其他语句
  3. 例子:
  4. age = 3
  5. if age >= 18:
  6. print('your age is', age)
  7. print('adult')
  8. else:
  9. print('your age is', age)
  10. print('teenager')

注意严格的缩进代码风格,否则代码会报错

循环语句
  1. for循环
  2. names = ['Michael', 'Bob', 'Tracy']
  3. for name in names:
  4. print(name)
  5. while循环
  6. sum = 0
  7. n = 99
  8. while n > 0:
  9. sum = sum + n
  10. n = n - 2
  11. print(sum)

注意:循环迭代的是list或者tuple中的元素.

数据类型转换
  1. >>> int('123') //整形
  2. 123
  3. >>> int(12.34)
  4. 12
  5. >>> float('12.34') //浮点型
  6. 12.34
  7. >>> str(1.23) //字符串
  8. '1.23'
  9. >>> str(100)
  10. '100'
  11. >>> bool(1) //布尔型
  12. True
  13. >>> bool('')
  14. False
定义函数
  1. def my_abs(x):
  2. if x >= 0:
  3. return x
  4. else:
  5. return -x

启动Python解释器,用from abstest import my_abs来导入my_abs()函数,定义空函数使用pass语句

  1. def nop():
  2. pass

如果要对参数类型做检测,只允许整数和浮点数类型的参数。数据类型检查可以用内置函数isinstance()实现:

  1. def my_abs(x):
  2. if not isinstance(x, (int, float)):
  3. raise TypeError('bad operand type')
  4. if x >= 0:
  5. return x
  6. else:
  7. return -x

注:如果返回值有多个,返回的类型是元组(tuple)

函数的参数

Python中有5种参数类型:位置参数、默认参数、可变参数、关键字参数、命名关键字参数。

(1).位置参数

  1. def dd(x):
  2. return x*x
  3. //上面的x就是一个位置参数

(2).默认参数

  1. def dd(x,n=2):
  2. while n>0:
  3. n = n-1
  4. x = x + n
  5. return x
  6. //上面的n就是默认参数,因为有默认值
  7. //注:位置参数必须放在默认参数前面,不然会报错

(3).可变参数

所谓可变参数,就是传入的参数个数是可以变化的。要定义一个可变参数,只需要在参数前面加上*,可变参数允许你传入0个或任意个参数,在函数调用时自动组装成tuple.

  1. def dd(*numbers):
  2. s = 0
  3. for n in numbers:
  4. s = s+n
  5. return s
  6. >>> dd(1,2,3,4)
  7. 10
  8. 此时传入任意个参数,都不会报错,如果要传入listtuple只需要在对应的元素前加*,例如:
  9. >>> num = [1,2,3,4]
  10. >>> dd(*num)
  11. 10
  12. >>> dd(num) //报错
  13. Traceback (most recent call last):
  14. File "<stdin>", line 1, in <module>
  15. File "F:\Python\test.py", line 26, in dd
  16. s = s+n
  17. TypeError: unsupported operand type(s) for +: 'int' and 'list'
  18. >>>

(4).关键字参数

关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

  1. def dd(name,age,**height):
  2. print('name: ',name,'age: ',age,'other: ',height)
  3. >>> dd('hx',23,city='chengdu',location='wenjiang')
  4. name: hx age: 23 other: {'city': 'chengdu', 'location': 'wenjiang'}
  5. >>> dd('hx',23,city,location) //传入的关键字参数必须是键值对,不然会报错
  6. Traceback (most recent call last):
  7. File "<stdin>", line 1, in <module>
  8. NameError: name 'city' is not defined
  9. >>>
  10. >>> dd('hx',23) //可以不传入关键字参数
  11. name: hx age: 23 other: {}
  12. >>>
  13. //还可以直接传入一个dict,前面加上**
  14. >>> extra = {'city':'chengdu','location':'wenjiang'}
  15. >>> dd('hx',23,**extra)
  16. name: hx age: 23 other: {'city': 'chengdu', 'location': 'wenjiang'}
  17. >>>

(5).命名关键字参数

命名关键字参数就是把关键字参数的参数名字进行了约束,进行约束后,就不能传入规定好的参数名以外的参数,否则会报错。命名关键字参数可以有默认值。

  1. def dd(name, age, *, city, job): //命名关键字参数放在*号的后面,如果有可变参数,就不需要*了,如果不加*就变成位置参数了
  2. print(name, age, args, city, job)
  3. >>> dd('xx',23,city='chengdu',job='engineer')
  4. xx 23 chengdu engineer
  5. >>> dd('xx',23,dsdas='chengdu',eqweq='engineer')
  6. Traceback (most recent call last):
  7. File "<stdin>", line 1, in <module>
  8. TypeError: dd() got an unexpected keyword argument 'dsdas'
  9. >>>
  10. def dd(name, age, *args, city, job):
  11. print(name, age, args, city, job)
  12. >>> dd('hx',12,1,2,3,city='beijing',job='coder')
  13. hx 12 (1, 2, 3) beijing coder
  14. >>> dd('hx',12,1,2,3,citys='beijing',jobs='coder')
  15. Traceback (most recent call last):
  16. File "<stdin>", line 1, in <module>
  17. TypeError: dd() got an unexpected keyword argument 'citys'
  18. >>>

仅此来记录学习Python的路程, = =!!!
转载请注明出处,谢谢!!



标签
评论一下

评论列表

  • 无言以对 评论:
厉害了我的哥,开始整Python了。
  • 2017/11/12 09:07:57
  • 回复
  • 孤单又灿烂的人 回复 无言以对
O(∩_∩)O哈哈~,没事学着玩。
  • 2017/11/12 09:09:29
  • 回复