函数的返回值

现在有一个需求,比较两个人的月薪,然后想获取月薪较大人的年薪。

如果需要在程序中拿到函数的处理结果做进一步的处理,则需要函数必须要有返回值。

需要注意的是:

return是一个函数结束的标志,函数内可以有多个return,只要执行到return,函数就会执行。

return的返回值可以返回任意数据类型

return的返回值无个数限制,即可以使用逗号隔开返回多个值

0个:返回None

1个:返回值是该值本身

多个:返回值是元组

#返回单个值

def max_self(salary_x, salary_y):

if salary_x > salary_y:

return salary_x

else:

return salary_y

max_salary = max_self(20000, 30000)

print(max_salary*12)

##360000

#返回多个值

def fun():

name = 'nick'

age = 19

hobby_list = ['read', 'run']

return name, age, hobby_list

name, age, hobby_list = func()#解压缩

print(f"name,age,hobby_list: {name, age, hobby_list}")

##name,age,hobby_list:{'nick', 19, ['read', 'run']}

函数的调用

#函数调用的三种方式

def max_self(x, y):

if x>y:

return x

else:

return y

# 1.

max_self(1, 2)

# 2.

res = max_self(1, 2)*12

# 3.

max_self(max_self(20000, 30000),40000)

函数的参数

#形参,本质是变量名

def func(x, y):

print(x)

print(y)

##位置形参

def func(x, y):

print(x)

print(y)

##默认形参

def fun(x, y=10):

print(x)

print(y)

func(2)

'''

注意:

1.位置形参必须放在默认形参的左边

2.默认形参的值只在定义阶段赋值一次,也就是说默认参数的值在函数定义阶段就已经固定了

'''

#实参,本质是变量的值

func(1, 2)

#位置实参,函数调用阶段,按照从左到右的顺序依次定义的实参。

func(1, 2)

#关键值实参,调用函数时,按照key=value的形式指定的参数传值

func(y=2, x=1)

'''

注意:

1.可以混用位置实参和关键字实参,但是位置实参必须在关键字实参的左边

2.可以混用位置实参和关键字实参,但不能对同一个形参重复赋值

func(x, y=2)

func(y=2, x) # SyntaxError:positional argument follows keyword argument

func(x, x=1) # NameError: name 'x' is not defined

'''

'''

可变长参数

#可变长参数之*

## 形参(会把溢出的位置实参全部接收,然后存成元组形式,然后把元组赋值给*后的参数)

def sun_self(*args):

res = 0

for num in args:

res += args:

return res

res = sun_self(1, 2, 3, 4)

print(res)

### 10

## 实参(会把*后参数的值循环取出,打散成位置实参,遇到了就想到去打散)

def func(x, y, z, *args):

print(x, y, z, args)

func(1, *(1, 2), 3, 4):

### 1 1 2 (3, 4)

#可变长参数之**

## 形参(**会把溢出的关键字实参全部接收,存储成字典的形似,然后把字典赋值给*后的参数)

def func(**kwargs):

print(kwargs)

func(a=5)

### {'a', 5}

## 实参(**会将**后的参数的值循环取出,打散成关键字实参,遇到了就想到去打散)

def func(x, y, z, **kwargs):

print(x, y, z, kwargs)

func(1, 3, 4, **{'a': 1, 'b': 2})

### 1 3 4 {'a': 1, 'b': 2}

函数对象

'''

函数是第一类对象,即函数可以被当作数据处理

'''

def func():

print('from func')

print(func)

###

#函数对象的四大功能

##1.引用

x = 'hello nick'

y = x

f = func

print(f)

###

##2.当做参数传给一个函数

len(x)

def foo(m):

m()

foo(func)

### from func

##3.可以当做函数的返回值

def foo(x):

return x

res = foo(func)

print(res)

res()

###

###from func

##4.可以当做容器类的元素

i = [x]

function_list = [func]

function_list[0]()

###from func

名称空间和作用域

"""

1.内置名称空间

存放Python解释器自带的名字,如int、float、len

在解释器启动时生效,在解释器关闭时失效

"""

'''

2.局部名称空间

用于存放函数调用期间函数体产生的名字,如f2

在文件执行时函数调用期间时生效,在函数执行结束后失效

'''

def f1():

def f2():

print('from f2')

f2()

f1()

'''

2.全局名称空间

除了内置和局部的名字之外,其余都存放在全局名称空间,如x, func, 1, z

'''

x = 1

def func():

pass

l = [1, 2]

if 3 > 2:

if 4 > 3:

z = 3

#加载顺序

##内置---》全局---》局部

#查找顺序

##当前位置--->局部---》全局---》内置

x = 1

def func():

print(x)

x = 10

func()

#10

##作用域

###全局作用域

x = 1

def bar():

print(x)

bar() #1

###局部作用域

def f1():

def f2():

def f3():

print(x)

x = 2

f3()

f2()

f1() #2

'''

作用域注意点

x = 1

def f1(): #定义阶段 x = 1

print(x)

def f2():

x = 2

f1()

f2() #1

'''

#作用域的应用

def f1():

def inner():

print('from inner')

return inner

f = f1() #把局部定义的函数放在全局之中

def bar():

f()

bar()

# from inner

## global关键字

x = 1

def f1():

x = 2

def f2():

# global x # 修改全局

x = 3

f2()

f1()

print(x) # 1

x = 1

def f1():

x = 2

def f2():

global x

x = 3

f2()

f1()

print(x)n # 3(global把x声明为全局变量之后,x指向3这个变量值,所以打印的是3)

##nonlocal

x = 1

def f1():

x = 2

def f2():

x = 3

f2()

print(x)

f1() # 2

x = 1

def f1():

x = 2

def f2():

nolocal x #针对嵌套函数局部之间的修改

x = 3

f2()

print(x)

f1() # 3

'''

注意点:

1.在局部想要修改全局的可变类型,不需要任何声明,可以直接修改。

2.在局部如果想要修改全局的不可变类型,需要借助global声明,声明为全局的变量,即可直接修改

'''

lis = []

def f1():

lis.append(1)

print(f"调用函数前:{lis}")

f1()

print(f"调用函数后:{lis}")

'''

调用函数前:[]

调用函数后:[1]

'''

闭包函数和装饰器

#闭包函数

def outter(x):

x = 1

def inner():

print(x)

return inner

f = outter(1)

f()

f()

f()

# 1

# 1

# 1

#闭包函数的应用

import requests

def outter(url):

def get():

response = requests.get(url)

print(response.text)

return get

baidu_spider = outter('https://www.baidu.com')

baidu_spider() #直接爬取百度网页

#装饰器

# 直接在模板里面加入登录功能

def deco(func):

def wrapper(*args, **kwargs):

#登录功能

inp_username = input('请输入用户名:')

inp_password = input("请输入密码:")

if inp_username == 'nick' and inp_password == '123':

print("登录成功")

else:

print("登录失败")

res = func(*args, **kwargs)

return res

return wrapper

@deco

def shopping():

print("欢迎来到购物模块")

shopping()

'''

#装饰器模板

def deco(func):

def wrapper(*args, **kwargs):

res = func(*args, **kwargs)

return res

return wrapper

'''

迭代器

#可迭代的对象:Python内置str、list、tuple、dict、set、file都是可迭代对象。

'''

特点:

1.内置有__iter__方法的都叫可迭代的对象

'''

'''

迭代器对象:执行可迭代对象的__iter__方法,拿到的返回值就是迭代器对象。

特点:

内置__next__方法,执行该方法会拿到迭代器对象中的一个值

内置有__iter__方法,执行该方法会拿到迭代器本身

文件本身就是迭代器对象。

缺点:

取值麻烦,只能一个一个取,并且只能往后取,值取了就没了

无法使用len()方法获取长度

'''

#for循环:称为迭代器循环,in后必须是可迭代对象

'''

因为迭代器使用__iter__后还是迭代器本身,因此for循环不用考虑in后的对象是可迭代对象还是迭代器对象。

由于对可迭代对象使用__iter__方法后变成一个迭代器对象,这个迭代器对象只是占用了一小块内存空间,他只有使用__next__后才会吐出一个一个值。如lis = [1,2,3,4,5,...]相当于一个一个鸡蛋,而lis = [1,2,3,4,5,...].__iter__相当于一只老母鸡,如果你需要蛋,只需要__next__即可

'''

python函数定义的要点_python基础之函数重点相关推荐

  1. python基础函数及用法意思_Python基础之函数基本用法与进阶详解

    本文实例讲述了Python基础之函数基本用法与进阶.分享给大家供大家参考,具体如下: 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的作用 函数 ...

  2. python变量定义的规则_Python基础教程(2)Python变量与注释

    一.Python变量定义规则 在Python中定义变量的方式和Shell很像,有以下规则: 1.变量名只能是字母.数字或者下划线的组合,不能有空格或者其他特殊字符,且第一个字符不能是数字 2.使用变量 ...

  3. python入门之函数结构函数的参数_Python 基础之函数初识与函数参数

    一.函数初识 定义:满足某一个方法 满足某一个功能#(1)功能(包裹一部分代码 实现某一个功能 达成某一个目的)#(2)可以反复调用,提高代码的复用性,提高开发效率,便于维护管理#(3)函数的基本格式 ...

  4. python函数和方法概念_python基础学习——函数和方法的区别与联系

    以下是综合多家说法的个人理解总结,仅为做到理解它们的区别与联系,不保证严谨. 函数 函数是封装了一些独立的功能,可以直接调用,python内置了许多函数,同时可以自建函数来使用. 独立的函数是函数(像 ...

  5. python字符串定义变量名_python基础-变量和字符串

    一.变量 变量的作用: 存储程序运行的结果,变量存储在内存之中,一个变量也就是在内存中开辟了一定的空间 变量可以存储什么? 变量可以存储不同的数据类型,可以为 整数.小数或者字符 变量的定义规范 a. ...

  6. 在python中、正确的函数定义格式为_Python函数的定义与实现

    1. 函数的介绍 函数是 实现具有特定功能的代码块 Python中预制了许多内置函数,也可以根据自己的需求创建自定义的函数 隐藏实现功能的细节 代码的复用 提高可读性,便与调试 def 函数名(形参1 ...

  7. python函数+定义+调用+多返回值+匿名函数+lambda+高级函数(reduce、map、filter)

    python函数+定义+调用+多返回值+匿名函数+lambda+高级函数(reduce.map.filter) Python 中函数的应用非常广泛,比如 input() .print().range( ...

  8. python类定义的讲解_python类定义的讲解

    Python中的类属性和对象属性的区别详解 类属性: class Employee(object): emCount=0 def __init__(self,name,salary): self.na ...

  9. Python学习笔记---------廖雪峰(基础和函数)

    Python学习笔记---------廖雪峰(基础和函数)

最新文章

  1. 面试限流、熔断、高可用,好多人一脸懵!
  2. Qt Linguist 界面语言翻译
  3. SVD分解及应用的直观理解
  4. 神经网络隐藏层节点数效率最优值
  5. (70)内核重载 xp sp3 x86 单核
  6. python最大分词_python正向最大匹配分词和逆向最大匹配分词的实例
  7. 张小龙内部分享:一个产品只能有一个主线功能
  8. Ruby的module(模块)
  9. 小论文期刊投稿相关整理资料
  10. java ee规范_测试Java EE 8规范
  11. 3 5的二维数组C语言程序,C语言及程序设计提高例程-33 二维数组元素的引用
  12. 稳扎稳打Silverlight(25) - 2.0线程之Thread, Timer, BackgroundWorker, ThreadPool
  13. vue合并表格excel导出_vue export2Excel 怎么导出一个 excel 同时里面有两个 sheet?
  14. 【超实用精选】设计师必备的设计资源网站合集
  15. 《CSS权威指南》读书笔记4
  16. 有道云笔记分享_有道云笔记
  17. (转载)IT行业都有哪些职位,初学者(0基础,新人)该如何选择,才能够快速进入这个行业?
  18. 推特CEO继任者曝光:带着老婆孩子睡公司,钢铁侠20年嫡系,现在掌舵挖洞公司...
  19. python下载西瓜视频2020最新思路
  20. 感动:我奋斗了18年才和你坐在一起喝咖啡(转)

热门文章

  1. C# Post数据和接收简单示例【转】
  2. html5 canvas 画图移动端出现锯齿毛边的解决方法
  3. 小程序“errcode“:41002错误问题如何解决?
  4. Nginx 提示host not found in upstream 错误解决方法
  5. dpkg安装deb缺少依赖包的解决方法
  6. 数据库异常 :java.sql.SQLException: Access denied for user ‘root‘@‘localhost‘ (using password: YES)
  7. JavaScript 下载大文件解决方案(Blob+OjbectURL)
  8. 为什么要避免使用JavaScript中的递增(“++”)和递减(“ - ”)运算符?
  9. 如何在Google Chrome浏览器中启动JavaScript调试器?
  10. 当进度对话框和后台线程处于活动状态时,如何处理屏幕方向变化?