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. Java后端,最全知识点

    你可能有所感悟.零散的资料读了很多,但是很难有提升.到处是干货,但是并没什么用,简单来说就是缺乏系统化.另外,噪音太多,雷同的框架一大把,我不至于全都要去学了吧. 这里,根据基础.Java基础.Jav ...

  2. ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/itsdangerous' Consider using the `--user` option or check the permissions

    近期练习flask写个blog, 安装flask扩展时 pip install Flask-WTF 报ERROR: Could not install packages due to an Envir ...

  3. Makefile 文件格式;makefile伪目标

    Makefile包含 目标文件.依赖文件.可运行命令三部分. 每部分的基本格式例如以下: test: prog.o  code.o gcc  -o  test   prog.o   code.o 当中 ...

  4. Sublime Text 3如何关闭自动更新

    1.Preferences -> Settings-User 2.插入下面代码:"update_check": false 如果有其他的设置,用逗号隔开,然后保存 3.Pre ...

  5. Java 的synchronized关键字使用

    synchronized 关键字是实现锁的一种方式,是在jvm层面实现的非公平锁,以下是使用synchronized的四种方式 synchronized 特性: 1.非公平锁 2.可重入性 1.作用在 ...

  6. 解决“QGtkStyle could not resolve GTK……”问题

    如果出现错误 QGtkStyle could not resolve GTK. Make sure you have installed the proper libraries 或者出现错误 err ...

  7. 洛谷 P5686 [CSP-SJX2019]和积和

    传送门 思路 应用多个前缀和推出式子即可 \(30pts\): 首先如果暴力算的话很简单,直接套三层循环就好了(真的是三层!!最后两个\(sigma\)一起算就好了) \[\sum_{l = 1}^{ ...

  8. 打印从1到最大的n

    题目:输入数字n,按顺序打印出从1到最大的n位十进制数.比如输入3,则打印出1.2.3一直到最大的3位数999 需考虑大数问题 #-*-coding:utf-8-*- class print_N: d ...

  9. Springboot整合单元测试

    概述 对于简单易懂的小项目而言,可以不适用单元测试对平时开发没有什么影响,但是对于大型项目,单纯的依赖 “手点功能测试”, 那简直就是灾难,好了,说道这里,应该明白测试的一个重要性了,,,接下来,我们 ...

  10. Python爬虫实践~BeautifulSoup+urllib+Flask实现静态网页的爬取

    爬取的网站类型: 论坛类网站类型 涉及主要的第三方模块: BeautifulSoup:解析.遍历页面 urllib:处理URL请求 Flask:简易的WEB框架 介绍: 本次主要使用urllib获取网 ...