web前端学习python之第一章_基础语法(二)
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之第一章_基础语法(二)的更多相关文章
- web前端学习python之第一章_基础语法(一)
web前端学习python之第一章_基础语法(一) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...
- 第一章 –– Java基础语法
第一章 –– Java基础语法 span::selection, .CodeMirror-line > span > span::selection { background: #d7d4 ...
- 《零成本实现Web自动化测试--基于Selenium》第一章 自动化测试基础
第一篇 Selenium 和WebDriver工具篇 第一章 自动化测试基础 1.1 初识自动化测试 自动化测试有两种常见方式 1.1.1 代码驱动测试,又叫测试驱动开发(TDD) 1.1.2 ...
- apue学习笔记(第一章UNIX基础知识)
总所周知,UNIX环境高级编程是一本很经典的书,之前我粗略的看了一遍,感觉理解得不够深入. 听说写博客可以提高自己的水平,因此趁着这个机会我想把它重新看一遍,并把每一章的笔记写在博客里面. 我学习的时 ...
- go基础系列 第一章 go基础语法
0.前言 1. go定义变量的几种方式 2. go内建变量类型 3. 常量的定义 4. go枚举 5. go的if语句 零. go语言的换行 go语言对换行很有讲究, 如果想换行,必须有一个逗号, 否 ...
- 第一章JSP基础语法
jsp页面元素构成 jsp页面组成部分有:指令,注释,静态内容,表达式,小脚本,声明. jsp指令 page指令:通常位于jsp页面的顶端,同一个页面可以有多个page指令 include指令:将一个 ...
- ACwing算法基础课听课笔记(第一章,基础算法二)(差分)
前缀和以及二维前缀和在这里就不写了. 差分:是前缀和的逆运算 ACWING二维差分矩阵 每一个二维数组上的元素都可以用(x,y)表示,对于某一元素(x0,y0),其前缀和就是以该点作为右下角以整 ...
- 【前端】Web前端学习笔记【2】
[2016.02.22至今]的学习笔记. 相关博客: Web前端学习笔记[1] 1. this在 JavaScript 中主要有以下五种使用场景 在全局函数调用中,this 绑定全局对象,浏览器环境全 ...
- 【前端】Web前端学习笔记【1】
... [2015.12.02-2016.02.22]期间的学习笔记. 相关博客: Web前端学习笔记[2] 1. JS中的: (1)continue 语句 (带有或不带标签引用)只能用在循环中. ( ...
随机推荐
- U盘启动安装Centos 7
,1.先下载CentOS iso文件,http://centos.ustc.edu.cn/centos/7.6.1810/isos/x86_64/,注意大小是4G左右,之前不知道从哪里下载的iso文件 ...
- The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application问题解决方案参考
错误信息:The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the ...
- 打印word文档时遇到标记区如何取消
故障描述:word页面显示正常,打印以及打印预览的时候,页面上会出现部分暗色区域(标记区) 故障原因:简单标记惹的祸 解决办法:word菜单栏-审阅-简单标记 ...
- 剑指offer(65)矩阵中的路径
题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子.如果一条路径经过了矩阵中 ...
- day07数据类型的相互转化,字符编码
复习 ''' 1.深浅拷贝 ls = [1, 'a', [10]] 值拷贝:直接赋值 ls1 = ls, ls中的任何值发生改变,ls1中的值都会随之改变 浅拷贝:通过copy()方法 ls2 = l ...
- 浅谈装饰器(Python)
先来了解函数和执行函数在python的区别 我再重新定义一个函数,在函数前面加上@set_func 执行结果如下: 函数前面没有加@set_fun 执行结果如下: 是不是可以不修改原来的函 ...
- KMP总结
首先给一个我能看懂的KMP讲解: http://blog.csdn.net/v_july_v/article/details/7041827 来自大神july 文章很长,但是慢慢看,会发现讲的很好. ...
- MyBatis进阶(四)
mapper.xml文件的编写 mapper.xml映射文件实现数据库和实体类之间的映射关系,定义操作数据库的sql语句. 主体部分 文件头部 <?xml version="1.0&q ...
- company_credit
/** * Created by wu-yj on 2016/5/6. */ import java.sql.{Connection, DriverManager, PreparedStatement ...
- 【HNOI 2017】影魔
Problem Description 影魔,奈文摩尔,据说有着一个诗人的灵魂.事实上,他吞噬的诗人灵魂早已成千上万.千百年来,他收集了各式各样的灵魂,包括诗人.牧师.帝王.乞丐.奴隶.罪人,当然,还 ...