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 语句 (带有或不带标签引用)只能用在循环中. ( ...
随机推荐
- MySQL复制表-INSERT INTO SELECT
基础table为: mysql> select * from staff; +----+----------+-------+ | id | name | slary | +----+----- ...
- iOS进阶之如何进行 HTTP Mock(转载)
这篇文章会对 OHHTTPStubs 源代码的分析,其实现原理是建立在 NSURLProtocol 的基础上的,对这部分内容不了解的读者,可以阅读这篇文章 iOS 开发中使用 NSURLProtoco ...
- linux awk用法
awk是一个强大的文本分析工具,在对数据进行分析并生成报告时显得尤为强大. 使用方法:awk [options] 'BEGIN{ commands } pattern{ commands } END ...
- python实现简单算法
#选择n^2def selectSort(li): for i in range(len(li)-1): minLoc = i for j in range(i+1,len(li)): if li[j ...
- 【MySQL】InnoDB 内存管理机制 --- Buffer Pool
InnoDB Buffer Pool 是一块连续的内存,用来存储访问过的数据页面 innodb_buffer_pool_size 参数用来定义 innodb 的 buffer pool 的大小 是 M ...
- VS2110。VC++编译错误"error LNK2005: 已经在 XXX.obj 中定义的问题"
有时候我们会在头文件当中定义一些全局变量或者全局函数,这种做法会比较方便,但有时候会出现“编译错误"error LNK2005: 已经在 XXX.obj 中定义的问题"的链接问题. ...
- HttpClient throws TaskCanceledException on timeout
error msg: HttpClient throws TaskCanceledException on timeout HttpClient is throwing a TaskCanceledE ...
- Java 处理word文档后在前端展示
最新新开发的这个项目需要使用word文档并要求能在前端页面上带格式展示,由于项目不是内部使用,所以不考虑插件类的处理模式,都必须要本地处理完成,前端不需要做什么更新或者说安装就能直接访问,类似于百度文 ...
- gRPC Client Middleware.
中间件想必大家不陌生,今天给大家介绍如何实现中间件以及实现gRPC的客户端中间件. 什么是中间件? https://docs.microsoft.com/zh-cn/aspnet/core/funda ...
- golang协程踩坑记录
1.主线程等待多个协程执行完毕后,再执行下面的程序.golang提供了一个很好用的工具. sync.WaitGroup下面是个简单的例子. 执行结果: 2.主线程主动去结束已经启动了的多个协程.执行结 ...