1. 廖Python学习笔记

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

1.1.1. 输入输出

1.1.1.1. 输出

用 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>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>

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的增加而增加
  • 需要占用大量的内存,内存浪费多
    
    >> 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}

操作方法:

  • 添加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 >= 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 > 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


小结
使用递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致栈溢出。

转载于:https://blog.51cto.com/cysky/2061791

廖Python学习笔记一相关推荐

  1. Python学习笔记---------廖雪峰(基础和函数)

    Python学习笔记---------廖雪峰(基础和函数)

  2. python学习笔记1——(廖雪峰教程,菜鸟教程)python基础

    python学习笔记1--(廖雪峰教程,菜鸟教程) https://www.liaoxuefeng.com(https://www.liaoxuefeng.com) 阿修视频 .Python基础(复习 ...

  3. 【python】廖雪峰学习笔记

    廖雪峰python学习笔记 Python解释器 python 基础 输入输出 数据类型和变量 字符串和编码 list和tuple dict和set del删除的是变量,而不是数据 函数 高级特性 函数 ...

  4. Python学习笔记一简介及安装配置

    Python学习笔记一 参考教程:廖雪峰官网https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e54 ...

  5. Python学习笔记(六)

    1. IO编程 1.1 文件读写 1.2 StringIO和BytesIO 1.3 操作文件和目录 1.4 序列化 2. 进程和线程 2.1 多进程 2.2 多线程 2.3 ThreadLocal 2 ...

  6. Python学习笔记:Day 16 编写移动App

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  7. Python学习笔记:Day15 部署Web App

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  8. Python学习笔记:Day14 完成Web App

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  9. Python学习笔记:Day13 提升开发效率

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

最新文章

  1. 支持Dubbo接口文档生成的工具!
  2. python的编程模式-实例讲解Python设计模式编程之工厂方法模式的使用
  3. 怎么制作升温曲线图_利用金字塔原理制作PPT,完整有逻辑
  4. nginx访问502 gateway,*1 connect() failed (111: Connection refused) while connecting to upstream
  5. think php自增,thinkphp5分表自增ID解决方案
  6. 36/100. Generate Parentheses
  7. 大于3小于4的整数bleem_比三大,比四小的整数是存在的吗?
  8. 双边滤波器—— Matlab实现
  9. javascript框架比较(四)
  10. react map循环生成的button_常见 React 面试题
  11. Highcharts实现图形报表(我主要实现javaweb开发的图形报表)
  12. Silverlight实用窍门系列:51.Silverlight页面控件的放大缩小、Silverlight和Html控件的互相操作【附带源码实例】...
  13. 横向色差测试(LCA)—imatest
  14. JAVA要不要看源码_java需要看源码吗
  15. Google pixel 原生安卓出现 WiFi 网络受限、优化网速、网络无法连接问题
  16. Unity3d Android SDK接入解析(四)通用的Android SDK接入中间件
  17. visio中将图片改为平行四边形_如何用Photoshop将一张长方形的照片变成平行四边形?...
  18. C语言程序设计第五次作业——循环结构(1)
  19. scsi 教程 linux,SCSI存储详解以及Linux下ISCSI的实现
  20. 斯坦福大学计算机科学专业硕士排名,斯坦福大学计算机系统研究生排名关键的都看过来...

热门文章

  1. 存储过程学习笔记(SQL数据库
  2. JavaScript的DOM操作
  3. element表格取消全选_ElementUi 表格取消全选框,用文字表示
  4. 泰勒公式推导过程_论泰勒级数在机器学习家庭中的地位
  5. Win64 驱动内核编程-2.基本框架(安装.通讯.HelloWorld)
  6. hdu3182 状态压缩dp
  7. C语言-typedef与#define的区别
  8. 【Linux 内核 内存管理】Linux 内核内存布局 ② ( x86_64 架构体系内存分布 | 查看 /proc/meminfo 文件 | /proc/meminfo 重要字段解析 )
  9. 【五线谱】Sibelius 7.5.1 打谱软件安装 ( 软件下载 | 软件安装 )
  10. 【UI 设计 - Adobe Illustrator】基本设置 (图像显示 | 图像缩放 | 置入导出 | 标尺 | 网格 | 参考线 | 画板)