Python基础学习笔记(三)

函数的概念:

所谓函数,就是把具有独立功能的代码块组织为一个小模块,在需要的时候调用

函数的使用包含两个步骤:

1.定义函数 --封装独立的功能

2.调用函数 --享受封装的成果

主要分为:内置函数标准库函数第三方库用户自定义函数

函数的定义与调用:

def name(形参):

  #函数内容

  #return 返回的内容

name(实参

传参数的方法:

1基本参数

def saySome(name,word):
print("{0} wanted to say {1}".format(name,word))

2.默认参数

def saySome(name = "HHS",word = "his family to be healthy"):
print("{0} wanted to say that{1}".format(name,word))

3.* 参数(用于接收n个参数)

def saySome(*args):  #args为一个元组
print(args)
saySome('hzq',2,3)
输出:('hzq', 2, 3)

4.** 参数(用于接收n个默认参数)

def saySome(**kwargs):  #kwargs为一个字典
print(kwargs)
saySome(name = "hhs",age = 21)  #传值name不用加"",默认转成字符串类型
输出:{'name': 'hhs', 'age': 21}

return(返回值):

  • 默认情况:返回None
  • 一般情况:返回什么就是什么
  • 特殊情况:return 1,2,3  #用逗号隔开返回的是一个元组

对Pycharm的拓展:

断点:

如图:让程序执行至第六行停止

F8(Step over)从断点处执行,如果是方法,跳过执行至第七行,输出3个hello

F7(Step into)从断点处执行,如果是方法,跳至方法里面执行也就是执行第3行输出hello1

函数文档注释:

在开发中希望给函数添加注释,只需要在函数定义下方添加三个"""xxxx"""(三对引号)

可通过函数名.__doc__输出注释文档;也可选中函数通过crtl + Q查看内容

匿名函数lambda:

格式为:lambda 参数 : return的操作

Add = lambda x,y : x+y
Add(1,2)
输出:3

全局语句global:

global可以为变量赋值为全局变量(一般避免使用)

PI = 3.1415926
AI = 2.1415926
def updatePi():
global PI  #指定PI不是局部变量而是全局变量,与函数外的PI指向相同的对象
AI = 2.14  #在函数里出现,为局部变量,与函数外的AI指向不同的对象
PI = 3.14
updatePi()
print(AI,PI)
输出:AI = 2.1415926,PI = 3.14

非局部函数nonlocal:

在嵌套函数中,如果要为定义在上级的函数体的局部变量赋值,可以使用nonlocal

递归函数:

即为自调用函数,在函数体内部直接或间接地直接调用自己

常规案例1:使用递归实现阶乘

def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1)
print(factorial(9))

常规案例2:斐波那契数列

def fib(n):
if n < 1:
return -1
elif n ==1 or n==2:
return 1
else:
return fib(n-1) + fib(n-2)

函数的闭包(嵌套调用):

在一个外函数中定义了一个内函数,内函数里引用了外函数的临时变量,并且外函数的返回值是内函数的引用。这样就构成了一个闭包

例子:

def FunX(x):  
def FunY(y):
return x*y  #引用外函数的临时变量x
return FunY    #返回一个内函数
i = FunX(8)      #返回一个FunY的函数,且FunY继承了x=8
print(i)        #输出为:<function FunX.<locals>.FunY at 0x0037A8A0>
print(i(2))      #输出为16

内置函数总结:

输入输出:

  • print()
  • input()

强制转换:

  • dict()
  • set()
  • list()
  • tuple()
  • int()
  • float()
  • str()
  • bool()

数学相关:

  • abs()  #求绝对值
  • max()  #求最大值
  • min()  #求最小值
  • sum()  #求和
  • divmod()  #两数相除求它商和余数的

进制转化相关:

  • bin()  #将10进制转为2进制
  • oct()  #将10进制转为8进制
  • int()  #将其他进制转为10进制
  • hex()  #将10进制转为16进制

其他:

  • len()
  • open()
  • range()
  • id()
  • type()

高级内置函数:

1.map(函数,可迭代数据类型)  #批量处理常用

v = [10,20,30,40]
v1 = map(lambda x : x+50,v)
print(list(v1))
输出:[60,70,80,90]

map不影响v1,返回一个map对象

2.filter(函数,可迭代数据类型)  #过滤器

v = [10,20,'hhs',30,1.55]
v1 = filter(lambda x : type(x)==int ,v)
print(list(v1))
输出:[10, 20, 30]

  

3.reduce(函数,可迭代数据类型)  #累积

from functools import reduce
v = [10,20,30,40]
v1 = reduce(lambda x,y : x+y ,v)
print(v1)
输出:100

小练习:华为测试校招一面代码题:求两个数的最大公约数

方法一:辗转相除法

def fun1(a,b):
if b > a:
a, b = b, a
while a % b !=0:  #除至余数为0时跳出循环,取小的数b为最大公因数
c = a % b
a = b
b = c
return b
方法二:辗转相减法
def fun2(a,b):
while a - b !=0:
if a > b:
a = a - b
else:
b = b - a
return b

  

 

Python入门基础学习(函数)的更多相关文章

  1. Python入门基础学习 三

    Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形 ...

  2. Python入门基础学习 二

    Python入门基础学习 二 猜数字小游戏进阶版 修改建议: 猜错的时候程序可以给出提示,告诉用户猜测的数字偏大还是偏小: 没运行一次程序只能猜测一次,应该提供多次机会给用户猜测: 每次运行程序,答案 ...

  3. Python入门基础学习 一

    Python入门基础学习 一 Python下载及安装 下载地址:https://www.python.org/,选择最新的版本下载 稍等一会,安装完成. 简单语句 从idle启动Python:IDLE ...

  4. Python入门基础学习(文件与异常处理)

    Python基础学习笔记(七) 捕获异常的语法格式: 文件的基本操作: 打开文件 读.写文件 关闭文件 read方法 --读取文件: open函数的第一个参数是要打开的文件名(文件名区分大小写) 如果 ...

  5. Python入门基础学习(时间模块,随机模块)

    Python基础学习笔记(六) time模块: 时间的三种表示方法: 1.格式化字符串 2.时间戳 用来表示和1970年的时间间隔,单位为s 3.元组 struct_time 9个元素 time的st ...

  6. Python入门基础学习(模块,包)

    Python基础学习笔记(五) 模块的概念:模块是python程序架构的一个核心概念 每个以拓展名py结尾的python源代码文件都是一个模块 模块名同样也是一个标识符,需要符合标识符的命名规则 在模 ...

  7. Python入门基础学习(面向对象)

    Python基础学习笔记(四) 面向对象的三个基本特征: 封装:把客观事物抽象并封装成对象,即将属性,方法和事件等集合在一个整体内 继承:允许使用现有类的功能并在无须重新改写原来的类情况下,对这些功能 ...

  8. Python入门基础学习(列表/元组/字典/集合)

    Python基础学习笔记(二) 列表list---[ ](打了激素的数组,可以放入混合类型) list1 = [1,2,'请多指教',0.5] 公共的功能: len(list1) #/获取元素 lis ...

  9. Python入门基础学习(环境安装/字符串)

    Python基础学习笔记(一) 编译性语言与解释性语言: 编译性语言:读完代码再执行,一般会生成一个文件,如C语言会生成一个.h的文件给计算机执行 如:C,C++,C#,Java,Go 解释性语言:读 ...

随机推荐

  1. go语言设计模式之decorator

    decorator.go package decorator import ( "errors" "fmt" ) type IngredientAdd inte ...

  2. JavaScript实现点击复制按钮复制文本框的内容,兼容IOS

    <lable> <input type="text" id="txt"> <a href="javascript:;&q ...

  3. Codeforces Round #602 (Div. 2, based on Technocup 2020 Elimination Round 3) D2. Optimal Subsequences (Hard Version) 数据结构 贪心

    D2. Optimal Subsequences (Hard Version) This is the harder version of the problem. In this version, ...

  4. Codeforces Round #602 (Div. 2, based on Technocup 2020 Elimination Round 3) A. Math Problem 水题

    A. Math Problem Your math teacher gave you the following problem: There are n segments on the x-axis ...

  5. 13-scrapy中selenium的应用

    一. 引入 在通过scrapy框架进行某些网站数据爬取的时候,往往会碰到页面动态数据加载的情况发生,如果直接使用scrapy对其url发请求,是绝对获取不到那部分动态加载出来的数据值.但是通过观察我们 ...

  6. vue中template的作用及使用

     先来看一个需求:下图div用v-for做了列表循环,现在想要span也一起循环,应该怎么做? 有3种方法可以实现 ①:直接用v-for对span也循环一次(该方法虽然可以使用,但不要用这种方式,因为 ...

  7. 一些常见的http状态码

    HTTP状态码是服务器和客户端之间交流信息的语言,下面列出一些常见的HTTP状态码. 1XX系列 指定客户端应相应的某些动作,代表请求已被接受,需要继续处理.由于在HTTP/1.0协议中没有定义任何1 ...

  8. Zookeeper学习记录及Java客户端连接示例

    1. Zookeeper 1.1 简介 ZooKeeper is a centralized service for maintaining configuration information, na ...

  9. MySQL for OPS 12:锁处理

    写在前面的话 在前面的内容中提到过,在以前的 MyISAM 中锁是表级锁,InnoDB 是行级锁.这个锁到底是啥样,怎么找出来,这一节就主要做这个. 定位锁的问题 上一节我们创建了一个 1000万数据 ...

  10. python基础(35):协程

    1. 前言 之前我们学习了线程.进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位.按道理来说我们已经算是把cpu的利用率提高很多了.但是我们知道无论是创建多进程还是创 ...