标签:函数调用 最好 缩进 pow break 技术 images 程序 ...
1. 廖Python学习笔记大的分类 如函数 用二级标题,下面的用三级 如输入输出
1.1.1. 输入输出
1.1.1.1. 输出
用 print() 在括号里加上字符串,就可以向屏幕上输出指定的文字
print()函数可以接受多个字符串,用逗号(,)隔开,依次输出
遇到逗号输出一个空格。如图
提供了一个input(),可以让用户输入字符串,并存放到一个变量里。
name = input() print(name)
是初中数学所学的代数基础知识的使用。
- 整数(integer):负、正数(不带小数点)
- 浮点数(float):带小数点
- 字符串(string):以单引号‘,双引号"括起来的任意文本,单引号也是文本,需要双引号,双引号需要加\
- 多行字符串,用‘‘‘...‘‘‘,需要转义的比较多,可以利用r‘‘,表示内部的字符串默认不转义
- 布尔值(bool):一个布尔值只有True False两种值
- 空值(None):用None表示 ,只是一个特殊的空值
- 变量:概念基本上和实践代数的方程变量是一致的。
- // 求余运算
1.1.3. 字符串和编码
字符编码:
ASCII、UTF-8、Unicode
字符串:- ord 获取字符的整数表示
- chr 函数把编码转换为对应的字符
格式化:
输出格式的字符串: 用%来实现,在字符串内部:%s %d %f 点位符,外面用%引导了多个变量
print(‘%2d-%02d‘ % (3, 1)) print(‘%.2f‘ % 3.1415926) #---------- 3-01 3.14
另外一种格式化方式用format()
‘Hello, {0}, 成绩提升了 {1:.1f}%‘.format(‘小明‘, 17.125) #--- ‘Hello, 小明, 成绩提升了 17.1%‘
1.1.4. 使用list和tuple
1.1.4.1. list
Python内置的一种数据类型是列表:list
List是一种有序的集合,可以随时添加和删除其中的元素>> s = [‘python‘, ‘java‘, [‘asp‘, ‘php‘], ‘scheme‘] >> len(s) 4
1.1.4.2. tuple
另一种有序列表叫元组:tuple
元组一量初始化不能修改
定义的形式:t = (1,2) or t=() or t=(1,)--一个元素时后面得加逗号
不要少写冒号(:)
if <条件判断1>: <执行1> elif <条件判断2>: <执行2> elif <条件判断3>: <执行3> else: <执行4>
1.1.6. 循环
- for
- while
- break continue
Python内置子字典:dict的支持,Dict全称dictionary
使用健-值(key-value),具有极快的查找速度
dict有以下几个特点:
- 查找和插入的速度极快,不会随着key的增加而增加
- 需要占用大量的内存,内存浪费多
>> d = {‘Michael‘: 95, ‘Bob‘: 75, ‘Tracy‘: 85} >> d[‘Michael‘] 95
#### 1.1.7.2. Set
>set和dict类似,也是一组key的集合,但不存储value,同于key不能重复,值是唯一的
```python
>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}
操作方法:
Python不但能非常灵活地定义函数,而本身内置了很多有用的函数,可以直接调用
1.1.8.1. 抽象
抽象:是数学中非常常见的概念
函数的调用
内置函数,直接调用就可以,只需要知道函数的名称和参数,要交互命令行通过help(函数名)查看函数的帮助信息1.1.8.2. 数据类型转换
内置常用的函数里包括类型转换函数,比如int(),
1.1.8.3. 定义函数
定义一个函数要使用def语句,依次写出函数、括号、括号中的参数和冒号(:),然后,在缩进块中编写函数体,函数的返回值用return语句返回。
#coding:utf-8 def my_abs(x): if x >= 0: return x else: return -x #调用 print(my_abs(-99))
备注:
函数体内部的语句在执行时,一旦执行到return语句时,函数就执行完毕,并装结果返回1.1.8.4. 空函数
想定义一个什么事也不做的空函数,可以用pass语句
def nop(): pass
小结
定义函数时,需要确定函数名和参数个数;
如果有必要,可以先对参数的数据类型做检查;
函数体内部可以用return随时返回函数结果;
函数执行完毕也没有return语句时,自动return None。
函数可以同时返回多个值,但其实就是一个tuple。
定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。
对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了位置参数
def power(x, n=2): s = 1 while n > 0: n = n - 1 s = s * x return s
设置默认的函数 ,要注意以下几点:
- 一是必选参数在前,默认参数在后
- 二是如何设置默认参数
定义可变参数和定义一个list或者tuple参数相比,仅仅在参数前面加一个*号
关键字参数
可变参数允许你传入0个或者任意个参数,这些可以变参数在函数调用时自动组装为一个tuple
关键字参数允许你传入0个或者任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict命名关键字参数
对于 关键字参数 ,函数的调用者可以传入任意不受限制的关键参数。
小结
Python的函数具有非常灵活的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数。
默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误!
要注意定义可变参数和关键字参数的语法:
*args是可变参数,args接收的是一个tuple;
**kw是关键字参数,kw接收的是一个dict。学
以及调用函数时如何传入可变参数和关键字参数的语法:
可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过args传入:func((1, 2, 3));
关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过**kw传入:func(**{‘a‘: 1, ‘b‘: 2})。
使用*args和**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。
命名的关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值。
定义命名的关键字参数在没有可变参数的情况下不要忘了写分隔符*,否则定义的将是位置参数。
在函数内部,可以调用其他函数。如果一个函数在内部调用自身,这个函数就是递归函数
def fact(n): if n==1: return 1 return n * fact(n - 1)
调用过程:
===> fact(5)
===> 5 fact(4)
===> 5 (4 fact(3))
===> 5 (4 (3 fact(2)))
===> 5 (4 (3 (2 fact(1))))
===> 5 (4 (3 (2 1)))
===> 5 (4 (3 2))
===> 5 (4 6)
===> 5 24
===> 12
小结
使用递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致栈溢出。
标签:函数调用 最好 缩进 pow break 技术 images 程序 ...
原文地址:http://blog.51cto.com/cysky/2061791