开发者社区> 科技探索者> 正文

廖Python学习笔记一

简介:
+关注继续查看

1. 廖Python学习笔记

大的分类 如函数 用二级标题,下面的用三级 如输入输出

1.1.1. 输入输出

1.1.1.1. 输出

用 print() 在括号里加上字符串,就可以向屏幕上输出指定的文字
print()函数可以接受多个字符串,用逗号(,)隔开,依次输出
遇到逗号输出一个空格。如图
print 输出多个字符串

1.1.1.2. 输入

提供了一个input(),可以让用户输入字符串,并存放到一个变量里。

name = input()
print(name)

1.1.2. 变量

是初中数学所学的代数基础知识的使用。

  • 整数(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,)--一个元素时后面得加逗号

1.1.5. 条件判断

不要少写冒号(:)

if <条件判断1>:
<执行1&gt;
elif &lt;条件判断2&gt;:
<执行2&gt;
elif &lt;条件判断3&gt;:
<执行3&gt;
else:
<执行4&gt;

1.1.6. 循环

  • for
  • while
  • break continue

1.1.7. 使用dict 和Set

1.1.7.1. dict

Python内置子字典:dict的支持,Dict全称dictionary
使用健-值(key-value),具有极快的查找速度
dict有以下几个特点:

  • 查找和插入的速度极快,不会随着key的增加而增加
  • 需要占用大量的内存,内存浪费多
    
    &gt;&gt; d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
    &gt;&gt; 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}

操作方法:

  • 添加add(key)
  • 删除remove(key)

1.1.8. 函数

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 &gt;= 0:
return x
else:
return -x
#调用
print(my_abs(-99))

备注:
函数体内部的语句在执行时,一旦执行到return语句时,函数就执行完毕,并装结果返回

1.1.8.4. 空函数

想定义一个什么事也不做的空函数,可以用pass语句

   def nop():
       pass

小结

定义函数时,需要确定函数名参数个数
如果有必要,可以先对参数的数据类型做检查;
函数体内部可以用return随时返回函数结果;
函数执行完毕也没有return语句时,自动return None。
函数可以同时返回多个值,但其实就是一个tuple。

1.1.8.5. 函数的参数

定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。
对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了

位置参数
def power(x, n=2):
s = 1
while n &gt; 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


小结
使用递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致栈溢出。
本文转自孤舟夜航之家博客51CTO博客,原文链接http://blog.51cto.com/cysky/2061791如需转载请自行联系原作者

cysky

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
TF学习:Tensorflow基础案例、经典案例集合——基于python编程代码的实现(一)
TF学习:Tensorflow基础案例、经典案例集合——基于python编程代码的实现
47 0
学习hadoop需要什么基础
“学习hadoop需要什么基础”这已经不是一个新鲜的话题了,随便上网搜索一下就能找出成百上千篇的文章在讲学习hadoop需要掌握的基础。再直接的一点的问题就是——学Hadoop难吗?用一句特别让人无语的话回答就是:难不会,会不难!
1629 0
【OpenCV学习】角点检测
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ #include #include "cv.h" #include "highgui.h" #define MAX_CORNERS 100 int main(void) { int...
501 0
【OpenCV学习】滚动条
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ #include #include #include void TrackBarFunc(int val); struct _TrackBarData { ch...
510 0
【OpenCV学习】Bresenham算法opencv实现
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ /* * ===================================================================================== * * Filename: linebresenham.
911 0
【OpenCV学习】凸包的绘制
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/   二维凸包问题描述: 二维凸包的寻找是计算几何学的经典问题之一。 给定平面上的一些点,找出一个最小点集连成一个凸多边形,使得这若干 个点皆在此多边形内或此多边形上,这个凸多边形就是给定点的二维凸包。
897 0
5488
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载