一、函数

1.函数定义

def 关键字 -- 定义

func 函数名 -- 和变量定义规则一样

()必须要写格式

: 声明语句结束

def my_len():

​ 函数体

def func(a:int,b:str):

​ print(a,b)

func(1,2)

2.函数的好处

​ 1.减少代码重复性(冗余)

​ 2.代码可读性高

​ 3.将功能进行封装(造工具)

3.调用函数

​ 函数名+()

​ 多次调用就是执行多次

​ 可以循环使用

def func():

print("test")

func()

4.函数的返回值

return 的内容返回给了函数的调用

return 返回一个内容(就是内容本身) 可以返回任意类型

return下方的代码不执行,终止这个函数

return 终止函数,切记不能终止循环

return 返回多个内容的时候是元组形式

return 没有写返回值的时候返回的是None,不写return返回的也是None

5.位置传参

def yue(a,b,c=1): # 形参 c = 1是默认参数

​ print("test")

yue(True,(1,),c=3) # 实参 位置参数 > 默认参数

函数的参数

形参:函数定义的时候叫做形参

​ 位置参数

​ 默认参数

​ 混合参数

实参:函数调用的时候叫做实参

​ 位置参数

​ 关键字参数

​ 混合参数

传参:将实参传递给形参的过程叫做传参

6.函数的动态函数

*args,**kwargs(能够接收函数的位置参数和动态的关键字参数)

定义阶段(*args,**kwargs) 聚合

​ *args -- tuple

​ **kwargs -- dict

使用阶段*args,*kwargs打散

​ *args - 源数据类型

​ *kwargs - 打散的是字典的键

优先级:位置 > 动态位置 > 默认 > 动态关键字

lst = [12,23,323,32,32,4]

def func(*args):

​ print(*args)

func(lst[0],lst[1]) # 笨的方法

func(*lst)

7.函数的注释

"""

每次写函数的时候需要写注释

函数名.__doc__ 查看函数的注释

函数名.__name__ 查看函数的名字

"""

8.名称空间

内置空间:python解释器自带的

全局空间:当前文件(.py文件)

局部空间:函数体开辟的空间

加载顺序:内置>全局>局部

取值顺序:局部>全局>内置

作用域:

全局作用域:内置+全局

局部作用域: 局部

9.函数嵌套

函数中套函数

函数嵌套调用

函数嵌套参数的传递

函数嵌套返回值的传递

10.global nonlocal

global:修改全局空间的变量对应的值

nonlocal:在外层的函数中,修改局部空间的变量值,完全不涉及全局变量,只修改离他最近的一层,最近的一层没有变量继续向上找,直到找到最外层函数

三元运算符

a = 10

b = 20

c = a if a > b else b

变量名 = 条件成立的结果 条件 条件不成立的结果

二、函数名的应用

1.函数名指向的是函数的内存地址,加上()就执行这个函数

func()

2.函数名就是一个变量

age1 = 12
age2 = age1
age3 = age2
print(age3)
def fuc():
print(666)
f1 = fuc
f2 = f1
f2()
f1()

3.函数名可以作为容器类类型的元素

def func1():

 	print('in func1')

def func2():

 	print("in func2")

def func3():

     print("in func3")

lst = [func1,func2,func3]

for i in lst:

     i()

4.函数名可以作为函数的实参。

def func1():print("in func1")
def func2(argv):
argv()
print('in func2')
func2(func1)

5.函数名可以作为函数的返回值

def func1():
print("in func1")
def func2(argv):
print("in func2")
return argv
ret = func2(func1)
ret()

python 函数和函数名的应用的更多相关文章

  1. python之路day10-命名空间和作用域、函数嵌套,作用域链、闭包

    楔子 假如有一个函数,实现返回两个数中的较大值: def my_max(x,y): m = x if x>y else y return mbigger = my_max(10,20)print ...

  2. python学习Day12 函数的默认值、三元表达式、函数对象(函数名)的应用场景、名称空间与作用域

    复习 1.字符串的比较: -- 按照从左往右比较每一个字符,通过字符对应的ascii进行比较 2. 函数的参数 : 1)实参与形参:       -- 形参:在函数定义时()中出现的参数       ...

  3. python中通过字符串名来调用函数

    强调:eval()函数功能虽然强大,但是也很危险,这个方法需要慎重使用. 利用python中的内置函数 eval() ,函数说明: def eval(*args, **kwargs): # real ...

  4. python基础之函数名的使用,闭包以及迭代器

    内容梗概: 1. 函数名的使⽤用以及第⼀一类对象 2. 闭包 3. 迭代器 1.函数名一. 函数名的运⽤.函数名是一个变量, 但它是⼀个特殊的变量, 与括号配合可以执行函数的变量.1.1 函数名的内存 ...

  5. python基础(13):函数名的使用、第一类对象、闭包、迭代器

    1. 函数名的运用 函数名是⼀个变量,但它是⼀个特殊的变量,与括号配合可以执⾏函数的变量. 1.1 函数名的内存地址 def func(): print("呵呵") print(f ...

  6. Python进阶(三)----函数名,作用域,名称空间,f-string,可迭代对象,迭代器

    Python进阶(三)----函数名,作用域,名称空间,f-string,可迭代对象,迭代器 一丶关键字:global,nonlocal global 声明全局变量: ​ 1. 可以在局部作用域声明一 ...

  7. Python函数03/函数名的第一类对象及使用/f 格式化/迭代器/递归

    Python函数03/函数名的第一类对象及使用/f 格式化/迭代器/递归 目录 Python函数03/函数名的第一类对象及使用/f 格式化/迭代器/递归 内容纲要 1.函数名的第一类对象及使用 2.f ...

  8. Python使用property函数定义的属性名与其他实例变量重名会怎么样?

    首先如果定义的属性名与该属性对应的操作方法操作的实例对象同名就会触发无穷的递归调用,相关部分请参考<Python案例详解:使用property函数定义与实例变量同名的属性会怎样?> 但如果 ...

  9. Python函数二(函数名,闭包,迭代器)之杵臼之交

    函数名的使用: 函数名可以作为值,赋值给变量. 函数名可以作为参数传参给函数. 函数名可以作为返回值. 函数名可以作为元素存储在容器里. 闭包:在嵌套函数内,使用外层局部变量(非全局变量)就是一个闭包 ...

随机推荐

  1. c++快速排序算法

    c++快速排序算法 题目描述 利用快速排序算法将读入的NN个数从小到大排序后输出. 快速排序是信息学竞赛的必备算法之一.对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成.(C++选 ...

  2. 使用nexus搭建npm私服

    第一步,下载nexus 下载链接: https://pan.baidu.com/s/1GOYi2M3nT4Wcy7JEYmnqdA 提取码: a9hf 第二步,解压缩 我下载的是nexus-3.16. ...

  3. Win10更新后,MySQL服务莫名消失的问题

    手欠的给Win10更新,之后就发现右下角托盘里的小海豚变成白色的了,最后确认MySQL服务丢失 解决办法1: 1.重新安装服务:mysqld --install 2.如果之前没有自定义数据保存路径(d ...

  4. 记录一次pycharm中,引入其他类可用,下面总是有波浪线,而且Ctrl+b 无法查看类函数的源码

    最近在玩python,发现引入其他的函数们总是有波浪线,但是能够使用,crtl+b却无法看到,非常尴尬,然后查看了原因,记录如下: This inspection detects names that ...

  5. 关于Calendar的一些用法总结

    import java.util.Calendar; import java.security.KeyStore.TrustedCertificateEntry; import java.text.D ...

  6. vue2.0 富文本组件(基于wangeditor)

    1. 本组件基于 wangeditor http://www.wangeditor.com/ 如有侵权 请告知, 2. 效果图 3. 依赖安装 package.json 中 devDependenci ...

  7. [leetcode] 105. Construct Binary Tree from Preorder and Inorder Traversal (Medium)

    原题 题意: 根据先序和中序得到二叉树(假设无重复数字) 思路: 先手写一次转换过程,得到思路. 即从先序中遍历每个元素,(创建一个全局索引,指向当前遍历到的元素)在中序中找到该元素作为当前的root ...

  8. python迭代器-迭代器取值-for循环-生成器-yield-生成器表达式-常用内置方法-面向过程编程-05

    迭代器 迭代器 迭代: # 更新换代(其实也是重复)的过程,每一次的迭代都必须基于上一次的结果(上一次与这一次之间必须是有关系的) 迭代器: # 迭代取值的工具 为什么用迭代器: # 迭代器提供了一种 ...

  9. Visual Studio 调试(系列文章)

    调试是软件开发过程中非常重要的一个部分,它具挑战性,但是也有一定的方法和技巧. Visual Studio 调试程序有助于你观察程序的运行时行为并发现问题. 该调试器可用于所有 Visual Stud ...

  10. sql format 格式化数字(前面补0)

    将一个数字例如33,或1使用t-sql语句转换成033或001 以下是详细分析: 1.select power(10,3)得到1000 2.select cast(1000+33 as varchar ...