python3.x 基础三:函数
1.OOP 面向对象编程,万物皆对象,以class为主,抽象化
2.POP 面向过程变成,万事皆过程,def定义过程
3.函数式编程,将某种功能封装起来,用的时候直接调用函数名,def定义函数,也叫function/方法/过程/子程序
函数定义:函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需要调用其函数名即可 --Alex
特性:
- 减少重复代码
- 使程序变得可扩展
- 使程序变得易维护
语法定义:
def 函数名():
函数执行语句
- 不带参数的函数调用
>>> def func_name1():
... print("hello world")
...
>>> func_name1()
hello world
- 带1个参数的函数调用
>>> def func_name1(name):
... print("my name is :",name)
...
>>> func_name1('alex')
my name is : alex
>>> name = 'oldboy'
>>> func_name1(name)
my name is : oldboy
>>>
- 带2个参数的函数调用
- def定义函数的时候,括号里面的变量叫形参,引用内存空间
- 调用函数的时候,括号里面的变量叫实参,内存数据
- 形如(variable1,variable2),叫位置参数
- 形如(variable1=value1,variable2=value2),叫关键字参数
- 关键字参数一定要在位置参数后面
- 没特别指明,形参和实参必须一一对应,多一个少一个都报错
>>> def func_name2(a,b):
... c=a*b
... print(c)
...
>>> func_name2(2,3)
6
>>> x,y=5,5
>>> func_name2(x,y)
25
>>> func_name2(a=2,b=3)
6
>>> func_name2(a=2,5)
File "<stdin>", line 1
SyntaxError: positional argument follows keyword argument
>>> func_name2(2,b=5)
10
>>> func_name2(a=2,b=3,c=4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: func_name2() got an unexpected keyword argument 'c'
>>> func_name2(a=2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: func_name2() missing 1 required positional argument: 'b'
- 函数返回值,遇到return语句将结束函数
>>> def with_return(a,b):
... return(a * b)
... return(a + b)
...
>>> def without_return(a,b):
... print(a*b)
... print(a+b)
...
>>> with_return(2,3)
6
>>> without_return(2,3)
6
5
>>> x=with_return(2,3)
>>> print(x)
6
>>> y= without_return(2,3)
6
5
>>> print(y)
None
>>>
- 全局变量与局部变量
- 函数体外定义的变量称为全局变量,在函数体内也生效,前提是先定义全局变量,后定义函数
- 函数体内定义的变量称为局部变量,只在当前函数体内生效
name,age = 'alex',18
print(name,age)
def func_name0():
name = 'oldboy'
age = 100
print(name,age)
print(age+1)
func_name0()
print(name,age) alex 18
oldboy 100
101
alex 18
- 非固定参数,当传入的参数不确定个数的时候
- 非固定参数*args,传入的参数变成元组,元组可为空
- 非固定参数**kwargs,传入的参数变成字典,
- *args与**kwargs可同时使用
>>> def func_name5(name,age,*args):
... print(name,age,args)
...
>>> func_name5('alex',18)
alex 18 ()
>>> func_name5('alex',18,'oldboy')
alex 18 ('oldboy',)
>>> func_name5('alex',18,'oldboy',100)
alex 18 ('oldboy', 100)
>>> func_name5('alex',18,'oldboy',100,[1,2])
alex 18 ('oldboy', 100, [1, 2])
>>> func_name5('alex',18,'oldboy',100,[1,2],{'key1':'v1','k2':'v2'})
alex 18 ('oldboy', 100, [1, 2], {'key1': 'v1', 'k2': 'v2'})
>>> def func_name6(name,age,**kwargs):
... print(name,age,kwargs)
...
>>> func_name6('alex',18)
alex 18 {}
>>> func_name6('alex',18,'oldboy')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: func_name6() takes 2 positional arguments but 3 were given
>>> func_name6('alex',18,oldboy=100)
alex 18 {'oldboy': 100}
>>> func_name6('alex',18,oldboy=100,salary=1,address='beijing')
alex 18 {'address': 'beijing', 'salary': 1, 'oldboy': 100}
>>> def func_name7(name,age,*args,**kwargs):
... print(name,age,args,kwargs)
...
>>> func_name7('yzw',28,18,'man',address='guanghzou',mail='xxx@com.cn')
yzw 28 (18, 'man') {'address': 'guanghzou', 'mail': 'xxx@com.cn'}
>>> func_name7('zvy',18)
zvy 18 () {}
- 嵌套函数,函数中调用函数,但是只能调用同级的函数,不能隔级调用
- 递归函数
- 必须有一个明确的结束条件
- 每递归一次,问题规模比上一次都应有减少
- 效率不高,下面这个越到后面效率越低
>>> list1=[,]
>>> for i in range(,):
... list1.append(list1[i-]+list1[i-])
...
>>> print(list1)
[, , , , , , , , , ]
>>> def func_fib(x):
... if x == :
... return
... elif x == or x == :
... return
... return func_fib(x-)+func_fib(x-)
...
>>> func_fib()
- 匿名函数--link:
- 高阶函数,变量指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。
>>> def func_high(a,b,f):
... return f(a),f(b)
...
>>> num1=10
>>> str1='hello'
>>> func_high(num1,str1,id)
(10911456, 140199339463320)
python3.x 基础三:函数的更多相关文章
- Python基础三. 函数、lambda、filter、map、reduce
一.概述 函数, 就是用一些语句组织起来实现一组特定的功能, 用来重复调用. 函数的作用及意义:最大化的重用代码和最小化的代码冗余以及对流程的分解. Python中有哪些函数: 内建的函数 第三方模块 ...
- python3.x 基础三:装饰器
装饰器:本质是函数,用于装饰其他函数,在不改变其他函数的调用和代码的前提下,增加新功能 原则: 1.不能修改被装饰函数的源代码 2.不能修改被装饰函数的调用方式 3.装饰函数对于被装饰函数透明 参考如 ...
- MySQL 基础三 函数(聚合、字符串、时间、条件判断)
1.聚合 其它:GROUP_CONCAT.avg.sum.count.max.min SELECT typeid,GROUP_CONCAT(goodsname) FROM `goods` GROUP ...
- python3.x 基础三:字符集问题
总结了一张表,更详细信息百度百科: 序号 年份 编码 标准协会 特点 二进制长度 字符长度 表现 1 1967 ASCII 美国国家标准学会(American National Standard In ...
- python3.x 基础三:文件IO
打开文件的两种方式 1.直接打开文件并赋值给变量,打开后得到操作句柄,但不会自动关闭 file = open('文件名‘,'打开模式',’编码‘) fd = open('../config/file1 ...
- python3.x 基础三:set集合
集合,set(),记住: 1个特点:去重,把列表变成集合,达到自动去重操作,无序 5个关系:测试两个列表的交差并子反向差集 方法: | add(...) 常用,已存在元素去重不生效 | A ...
- Python3入门(三)——Python基础语法
一.基本语法 1.行和缩进 Python中,不使用括号来表示代码的类和函数定义块或流程控制. 代码块是由行缩进,缩进位的数目是可变的,但是在块中的所有语句必须缩进相同的量. 如下所示: a = 100 ...
- Swift语法基础入门三(函数, 闭包)
Swift语法基础入门三(函数, 闭包) 函数: 函数是用来完成特定任务的独立的代码块.你给一个函数起一个合适的名字,用来标识函数做什么,并且当函数需要执行的时候,这个名字会被用于“调用”函数 格式: ...
- day 53-1 Django基础三之视图函数
Django基础三之视图函数 本节目录 一 Django的视图函数view 二 CBV和FBV 三 使用Mixin 四 给视图加装饰器 五 Request对象 六 Response对象 一 Dja ...
随机推荐
- 2019-2020-1 20199329《Linux内核原理与分析》第四周作业
<Linux内核原理与分析>第四周作业 一.上周问题总结: 虚拟机环境缺少部分库文件 书本知识使用不够熟练 二.本周学习内容: 1.实验楼环境使用gdb跟踪调试内核 1.1 在该环境下输入 ...
- opencv-0-项目启程
opencv-0-项目启程 opencvC++QT 开始 无数次说要开始 opencv 的系列, 但是都由于各种原因没有坚持下去, 这次我做最后一次尝试, 也做最后一次坚持, 如果不做下去, 我就再也 ...
- Linux硬盘分区知识
前言 硬盘使用前,一般要分区,格式化(创建文件系统)<== 存放数据 类比,房子使用前,一般要隔断,装修,买家具,再住人. 分区 一块硬盘: 主分区.扩展分区.逻辑分区 主分区+扩展分区的数量& ...
- webpack插件解析:HtmlWebpackPlugin是干什么的以及如何使用它
HtmlWebpackPlugin是一个出现频率比较高的webpack插件,本文对其作用和配置作一番比较详细的分析(本文的配置均在webpack.config.js中进行). 为何使用它 简单来说,H ...
- 题目分享I
题意:2*n的地面,q次操作,每次操作将地面翻转,若该地是地面那翻转就成熔岩,如果是熔岩那翻转就成地面,熔岩人不能走,问人是否能从1,1走到2,n (ps:1,1和2,n不会在翻转的范围内,n,q≤1 ...
- Scrapy爬虫快速入门
安装Scrapy Scrapy是一个高级的Python爬虫框架,它不仅包含了爬虫的特性,还可以方便的将爬虫数据保存到csv.json等文件中. 首先我们安装Scrapy. pip install sc ...
- 数据库——数据库SQL语句大全,最常用的SQL语句
检索数据 检索单个列: SELECT pname FROM product 检索多个列: SELECT pname,market_price,is_hot FROM product 检索所有列: SE ...
- JUC之CAS
CAS(全称为CompareAndSwap,也有说是CompareAndSet,都差不多)是一条CPU并发原语,它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,判断预期值和更改新值的 ...
- 10_CSS入门和高级技巧(8)
图片透明 先来复习一下盒子的透明问题: opacity:0.6; 介于0~1之间,为了让IE兼容,我们要使用IE自己的滤镜: filter:alpha(opacity=60); 盒子的透明,会让里面的 ...
- Linux文件系统基本结构
(1)Linux文件系统为一个倒转的单根树状结构: (2)文件系统的根为“/”: (3)文件系统严格区分大小写: (4)路径使用“/”分割(windows使用“\”): 当前工作目录 (1)每个she ...