web前端学习python之第一章_基础语法(二)

前言:最近新做了一个管理系统,前端已经基本完成,

但是后端人手不足没人给我写接口,自力更生丰衣足食,

所以决定自学python自己给自己写接口哈哈哈哈~

上一章内容:web前端学习python之第一章_基础语法(一)

函数的定义和使用

内置函数

python有很多内置的有用的函数,可以直接调用,参考网址:https://docs.python.org/3/library/functions.html#abs

数据类型转换

其他数据类型转为整数int()

>>> int('123')
123
>>> int(12.34)
12
>>> float('12.34')
12.34
>>> str(1.23)
'1.23'
>>> str(100)
'100'
>>> bool(1)
True
>>> bool('')
False

函数名

函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”

>>> a = abs # 变量a指向abs函数
>>> a(-1) # 所以也可以通过a调用abs函数
1

定义函数

在python中,定义一个函数需要使用def语句

def my_abs(x):
if x >= 0:
return x
else:
return -x //内容不细讲,js函数是function,这里的关键字改成了def,不知道python有没有类似于箭头函数那种的写法

return意义与js一致,代码执行到return是,函数就执行完毕,并将结果返回,如果没有return函数执行完毕后也会返回结果,只是结果为none,return none可简写为return

引入函数

如果你已经把my_abs()的函数定义保存为abstest.py文件了,

那么,可以在该文件的当前目录下启动Python解释器,

from abstest import my_abs来导入my_abs()函数,注意abstest是文件名(不含.py扩展名):

│>>> from abstest import my_abs
│>>> my_abs(-9)
│9

空函数

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

def nop():
pass

定义一个空函数有什么意义呢?

pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来

pass也可以用在其他语句中

if age >= 18:
pass

传参的数据类型检查

有时候我们会传一些不恰当的参数导致代码报错,我们可以进行数据类型检查,数据类型检查用内置函数isinstance()实现

def my_abs(x):
if not isinstance(x, (int, float)):
raise TypeError('bad operand type')
if x >= 0:
return x
else:
return -x

默认参数(默认参数必须指向不变对象!)

我们传递参数的时候如果参数传的不全就会报错,我们可以给一些参数设置默认参数

def power(x, n=2):
s = 1
while n > 0:
n = n - 1
s = s * x
return s

小坑坑

def add_end(L=[]):
L.append('END')
return L //调用第二次和第三次时
>>> add_end()
['END', 'END']
>>> add_end()
['END', 'END', 'END'] //Python函数在定义的时候,默认参数L的值就被计算出来了,即[],因为默认参数L也是一个变量,它指向对象[],
//每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了。

//可以使用none这个不变对象来实现
def add_end(L=None):
if L is None:
L = []
L.append('END')
return L

可变参数

由于参数个数不确定,我们首先想到可以把a,b,c……作为一个list或tuple传进来,

def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum //*是重点

如果已有一个list或者tuple,要调用一个可变参数怎么办

>>> nums = [1, 2, 3]
>>> calc(*nums)
14

这样有点类似与apply,是把参数一个个传的或者类似于[...nums]

关键字函数(**可传可不传,可传任意个)

调用函数时可以只传入必须参数和任意个数的关键字参数

def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
>>> person('Bob', 35, city='Beijing')
name: Bob age: 35 other: {'city': 'Beijing'}
>>> person('Adam', 45, gender='M', job='Engineer')
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}

web前端学习python之第一章_基础语法(二)的更多相关文章

  1. web前端学习python之第一章_基础语法(一)

    web前端学习python之第一章_基础语法(一) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...

  2. 第一章 –– Java基础语法

    第一章 –– Java基础语法 span::selection, .CodeMirror-line > span > span::selection { background: #d7d4 ...

  3. 《零成本实现Web自动化测试--基于Selenium》第一章 自动化测试基础

    第一篇 Selenium 和WebDriver工具篇 第一章 自动化测试基础 1.1    初识自动化测试 自动化测试有两种常见方式 1.1.1 代码驱动测试,又叫测试驱动开发(TDD) 1.1.2 ...

  4. apue学习笔记(第一章UNIX基础知识)

    总所周知,UNIX环境高级编程是一本很经典的书,之前我粗略的看了一遍,感觉理解得不够深入. 听说写博客可以提高自己的水平,因此趁着这个机会我想把它重新看一遍,并把每一章的笔记写在博客里面. 我学习的时 ...

  5. go基础系列 第一章 go基础语法

    0.前言 1. go定义变量的几种方式 2. go内建变量类型 3. 常量的定义 4. go枚举 5. go的if语句 零. go语言的换行 go语言对换行很有讲究, 如果想换行,必须有一个逗号, 否 ...

  6. 第一章JSP基础语法

    jsp页面元素构成 jsp页面组成部分有:指令,注释,静态内容,表达式,小脚本,声明. jsp指令 page指令:通常位于jsp页面的顶端,同一个页面可以有多个page指令 include指令:将一个 ...

  7. ACwing算法基础课听课笔记(第一章,基础算法二)(差分)

    前缀和以及二维前缀和在这里就不写了. 差分:是前缀和的逆运算 ACWING二维差分矩阵    每一个二维数组上的元素都可以用(x,y)表示,对于某一元素(x0,y0),其前缀和就是以该点作为右下角以整 ...

  8. 【前端】Web前端学习笔记【2】

    [2016.02.22至今]的学习笔记. 相关博客: Web前端学习笔记[1] 1. this在 JavaScript 中主要有以下五种使用场景 在全局函数调用中,this 绑定全局对象,浏览器环境全 ...

  9. 【前端】Web前端学习笔记【1】

    ... [2015.12.02-2016.02.22]期间的学习笔记. 相关博客: Web前端学习笔记[2] 1. JS中的: (1)continue 语句 (带有或不带标签引用)只能用在循环中. ( ...

随机推荐

  1. C++ 屏幕录制

    http://www.pudn.com/Download/item/id/1584698.html task.renwuyi.com

  2. MySQL5.7 并行复制的学习

    MySQL 5.6 基于库级别的并行复制 MySQL5.6的并行复制是库(schema)级别的,从库为每个库(schema)分配一个线程以此来提高复制效率 在MySQL 5.6版本之前,Slave服务 ...

  3. PHP共享内存yac操作类

    http://www.laruence.com/2013/03/18/2846.html   鸟哥介绍 https://www.cnblogs.com/willamwang/p/8918377.htm ...

  4. 评价指标整理:Precision, Recall, F-score, TPR, FPR, TNR, FNR, AUC, Accuracy

    针对二分类的结果,对模型进行评估,通常有以下几种方法: Precision.Recall.F-score(F1-measure)TPR.FPR.TNR.FNR.AUCAccuracy   真实结果 1 ...

  5. 线程池如何复用一个线程-- ThreadPoolExecutor的实现(未完)

    任务是一组逻辑工作单元,而线程则是使任务异步执行的机制.在Java中,Runnable对象代表一个任务,Thread对象负责创建一个线程执行这个任务. 前提:1. 程序需要处理大量任务 2. 任务的执 ...

  6. linux下的缓存机制及清理buffer/cache/swap的方法梳理 (转)

    一.缓存机制介绍 在Linux系统中,为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果 ...

  7. Visual Studio 禁用诊断工具

    这里以 Visual Studio 2019 为例 调试 - 选项 调试 - 常规 - 禁用调试时启用诊断工具

  8. 为git关联编辑器(比如notepad++) Associating text editors with Git

    Associating text editors with git Using Notepad++ as your editors you can set your default editor in ...

  9. 论文笔记:Fast Neural Architecture Search of Compact Semantic Segmentation Models via Auxiliary Cells

    Fast Neural Architecture Search of Compact Semantic Segmentation Models via Auxiliary Cells 2019-04- ...

  10. 2、Docker基础用法

    容器镜像:https://hub.docker.com/ Docker架构图:  https://ruby-china.org/topics/22004 Docker使用客户端-服务器(client- ...