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. linux普通帐号可以临时切换到root(添加用户到sudoers中)

    一般,进入terminal之后,默认是普通账户能操作的功能,能访问的目录有限,需要临时切换到root账户 那么此时就需要配置sudoers文件,可以让普通用户通过sudo命令临时切换到root账户 首 ...

  2. spring整合dubbo[单机版]

    Spring整合Dubbo,这个是用xml配置的 (方式一) 来梳理下步骤: 1. 安装zookeeper,在进行简单配置[这里使用单机模式,不用集群] 2. 创建maven项目,构建项目结构 3. ...

  3. Spring HATEOAS的简单认识

    HATEOAS: 超媒体作为应用程序状态引擎(HATEOAS)是REST应用程序体系结构的一个组件,它将其与其他网络应用程序体系结构区分开来. 使用HATEOAS,客户端与网络应用程序交互,其应用程序 ...

  4. ComponentOne 2019V1:全面支持 Visual Studio 2019

    ComponentOne Enterprise 2019V1已经正式发布,本次更新的最大亮点就是 ComponentOne 控件全面支持 Visual Studio 2019. 作为一款专注于企业应用 ...

  5. Ubuntu 下生成 python 环境安装文件 requirements.txt

    参考: 查找python项目依赖并生成requirements.txt Ubuntu 下生成 python 环境安装文件 requirements.txt 首先通过 pip 安装pyreqs模块: p ...

  6. Request类源码分析

    通过APIView进入找到Request的源码 可以看见一堆属性和方法,其中request.data其实是一个方法,被包装成一个属性 继续看__getattr__和query_params方法: 代码 ...

  7. adb常用命令(转)

    1.Android Debug Bridge -adb常用命令 1.1简介 Android Debug Bridge,我们一般简称为adb,主要存放在sdk安装目录下的platform-tools文件 ...

  8. jsp servlet table 集合list 数据 绑定

    删除 前端

  9. golang协程踩坑记录

    1.主线程等待多个协程执行完毕后,再执行下面的程序.golang提供了一个很好用的工具. sync.WaitGroup下面是个简单的例子. 执行结果: 2.主线程主动去结束已经启动了的多个协程.执行结 ...

  10. springboot2.0配置连接池(hikari、druid)

    springboot2.0配置连接池(hikari.druid) 原文链接:https://www.cnblogs.com/blog5277/p/10660689.html 原文作者:博客园--曲高终 ...