Python入门基础学习(函数)
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入门基础学习(函数)的更多相关文章
- Python入门基础学习 三
Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形 ...
- Python入门基础学习 二
Python入门基础学习 二 猜数字小游戏进阶版 修改建议: 猜错的时候程序可以给出提示,告诉用户猜测的数字偏大还是偏小: 没运行一次程序只能猜测一次,应该提供多次机会给用户猜测: 每次运行程序,答案 ...
- Python入门基础学习 一
Python入门基础学习 一 Python下载及安装 下载地址:https://www.python.org/,选择最新的版本下载 稍等一会,安装完成. 简单语句 从idle启动Python:IDLE ...
- Python入门基础学习(文件与异常处理)
Python基础学习笔记(七) 捕获异常的语法格式: 文件的基本操作: 打开文件 读.写文件 关闭文件 read方法 --读取文件: open函数的第一个参数是要打开的文件名(文件名区分大小写) 如果 ...
- Python入门基础学习(时间模块,随机模块)
Python基础学习笔记(六) time模块: 时间的三种表示方法: 1.格式化字符串 2.时间戳 用来表示和1970年的时间间隔,单位为s 3.元组 struct_time 9个元素 time的st ...
- Python入门基础学习(模块,包)
Python基础学习笔记(五) 模块的概念:模块是python程序架构的一个核心概念 每个以拓展名py结尾的python源代码文件都是一个模块 模块名同样也是一个标识符,需要符合标识符的命名规则 在模 ...
- Python入门基础学习(面向对象)
Python基础学习笔记(四) 面向对象的三个基本特征: 封装:把客观事物抽象并封装成对象,即将属性,方法和事件等集合在一个整体内 继承:允许使用现有类的功能并在无须重新改写原来的类情况下,对这些功能 ...
- Python入门基础学习(列表/元组/字典/集合)
Python基础学习笔记(二) 列表list---[ ](打了激素的数组,可以放入混合类型) list1 = [1,2,'请多指教',0.5] 公共的功能: len(list1) #/获取元素 lis ...
- Python入门基础学习(环境安装/字符串)
Python基础学习笔记(一) 编译性语言与解释性语言: 编译性语言:读完代码再执行,一般会生成一个文件,如C语言会生成一个.h的文件给计算机执行 如:C,C++,C#,Java,Go 解释性语言:读 ...
随机推荐
- 检测到无法识别的AP,请升级AP数据库
0x00 事件 原因是公司新增了两个 AP 设备 TL-AP1202i ,似乎是新的 AP 硬件版本比较高,导致 AC 无法识别,控制器 Web 页面给出 检测到无法识别的AP,请升级AP数据库! 的 ...
- linux环境搭配
1.linuxLinux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的Unix工具软件.应用程序和网络协议 ...
- jango rest-framework page_size更新
老项目是三年前写的, 这周的新项目要用上DRF的分页功能时,发现老的写法无效了. 于是看了一些文档,原来写法变了. https://blog.csdn.net/dqchouyang/article/d ...
- express搭建后端请求路由,前端进行访问对应的接口 后端解决跨域
代码在 ==>E:\nodes实战\myserve\testserve 1 express搭建后端请求路由,前端进行访问对应的接口 1) 创建项目目录 express 项目名 -e 然后按照提示 ...
- Codeforces Round #578 (Div. 2)
Codeforces Round #578 (Div. 2) 传送门 A. Hotelier 暴力即可. Code #include <bits/stdc++.h> using names ...
- 设计模式-FlyWeight(结构型模式) 针对 需要创建大量对象的情形,被共享的状态作为内部状态,不被共享的状态作为外部状态
以下代码来源: 设计模式精解-GoF 23种设计模式解析附C++实现源码 //Flyweight.h #pragma once #include<string> class FlyWeig ...
- LOJ6033「雅礼集训 2017 Day2」棋盘游戏 (博弈论,二分图,匈牙利算法)
什么神仙思路啊-- 看到棋盘就去想二分图.(smg啊)(其实是校内模拟赛有基本一样的题,只不过直接给了个二分图) 看到二分图就去想最大匹配.(我怎么想偶环的性质去了) (以下内容摘自这里) 这个二分图 ...
- autojump--懒人利器
只有打开过的目录 autojump 才会记录,所以使用时间越长,autojump 才会越智能. 可以使用 autojump 命令,或者使用短命令 j. 跳转到指定目录 j directoryName ...
- C语言程序设计100例之(12):Eratosthenes筛法求质数
例12 Eratosthenes筛法求质数 问题描述 Eratosthenes筛法的基本思想是:把某范围内的自然数从小到大依次排列好.宣布1不是质数,把它去掉:然后从余下的数中取出最小的数,宣布它 ...
- JS 从内存空间谈到垃圾回收机制
壹 ❀ 引 从事计算机相关技术工作的同学,对于内存空间相关概念多少有所耳闻,毕竟像我这种非计算机科班出身的人,对于栈堆,垃圾回收都能简单说道几句:当我明白JS 基本类型与引用类型数据存储方式不同,才 ...