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

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

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

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

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

函数的定义和使用

内置函数

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

数据类型转换

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

  1. >>> int('123')
  2. 123
  3. >>> int(12.34)
  4. 12
  5. >>> float('12.34')
  6. 12.34
  7. >>> str(1.23)
  8. '1.23'
  9. >>> str(100)
  10. '100'
  11. >>> bool(1)
  12. True
  13. >>> bool('')
  14. False

函数名

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

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

定义函数

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

  1. def my_abs(x):
  2. if x >= 0:
  3. return x
  4. else:
  5. return -x
  6.  
  7. //内容不细讲,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扩展名):

  1. │>>> from abstest import my_abs
  2. │>>> my_abs(-9)
  3. 9

空函数

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

  1. def nop():
  2. pass

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

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

pass也可以用在其他语句中

  1. if age >= 18:
  2. pass

传参的数据类型检查

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

  1. def my_abs(x):
  2. if not isinstance(x, (int, float)):
  3. raise TypeError('bad operand type')
  4. if x >= 0:
  5. return x
  6. else:
  7. return -x

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

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

  1. def power(x, n=2):
  2. s = 1
  3. while n > 0:
  4. n = n - 1
  5. s = s * x
  6. return s

小坑坑

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

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

可变参数

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

  1. def calc(*numbers):
  2. sum = 0
  3. for n in numbers:
  4. sum = sum + n * n
  5. return sum
  6.  
  7. //*是重点

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

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

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

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

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

  1. def person(name, age, **kw):
  2. print('name:', name, 'age:', age, 'other:', kw)
  1. >>> person('Bob', 35, city='Beijing')
  2. name: Bob age: 35 other: {'city': 'Beijing'}
  3. >>> person('Adam', 45, gender='M', job='Engineer')
  4. 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. Leetcode 树(102, 637)

    637: 二叉树的层平均值 给定一个非空二叉树,返回一个由每层节点平均值组成的数组: https://leetcode-cn.com/problems/average-of-levels-in-bin ...

  2. win10优化

    1. 关闭磁盘碎片整理.自动维护计划任务    磁盘C-属性–工具–对驱动器进行优化和碎片整理–优化–更改设置–取消选择按计划运行 2. 关闭Windows Defender    控制面板–Wind ...

  3. 前向传播算法(Forward propagation)与反向传播算法(Back propagation)

    虽然学深度学习有一段时间了,但是对于一些算法的具体实现还是模糊不清,用了很久也不是很了解.因此特意先对深度学习中的相关基础概念做一下总结.先看看前向传播算法(Forward propagation)与 ...

  4. 0x11栈之Editor

    参考链接:https://blog.csdn.net/SSLGZ_yyc/article/details/81700623 对顶栈的思想: 建立两个栈,栈A存储从序列开头到当前光标的位置的一段序列,栈 ...

  5. Oracle错误——ORA-39002:操作无效、ORA-39070:无法打开日志文件、ORA-06512:在“SYS.UTL_FILE”,line

    错误 在使用数据泵impdp导入文件时,出现错误,无法导入数据 Next 问题原因 初步猜测,应该是Oracle用户权限出现问题,是对Directory目录无操作权限所致,经过一番修改和测试,发现使用 ...

  6. Ember.js 看法,精辟

    https://ruby-china.org/topics/31451#reply43 都是大牛,或许还是vue适合小白!架不住人多啊!一个非常优秀的产品,客户百十号人,如何发展! 46楼的感想如下, ...

  7. Oracle 《积累章》 根据身份证号码更新当前出生日期

    ,),'yyyy-MM-dd') 函数使用 to_date()      日期转换函数 to_date(substr(t.sfzh,7,8),'yyyy-MM-dd')   将“19901212” 转 ...

  8. IISExpress配置使其能通过IP访问方法

    环境说明: 本机IP:192.168.2.100:Web端口:11843 步骤一 打开[我的文档]\IISExpress\config\applicationhost.config,找到下面的代码块 ...

  9. structure

    https://wenku.baidu.com/view/a82b12d62dc58bd63186bceb19e8b8f67c1cef04.html?sxts=1541829436140

  10. python - xml转excel

    xml转excel,可以用xml.etree.ElementTree去解析xml文件,然后用xlwt写入excel 示例:ConvConfig.xml <Conveyor_Channel_1&g ...