Python进阶(一)----函数初识

一丶函数的初识

什么函数:

​ 函数是以功能为导向.一个函数封装一个功能

函数的优点:

​ 1.减少代码的重复性,

​ 2.增强了代码的可读性

二丶函数的结构

# def 关键字  定义一个函数,紧跟一个空格
# new_len 函数名:函数命名规范与变量命名规范一致,函数名具有可描述性
# () 结构需要,传参使用
# : 分隔符 , 分隔函数的定义和函数体
# tab键 四个空格,缩进函数体, def new_len(model):
count=0
for el in model:
count+=1
print(count)

三丶函数的调用

函数的调用: 函数名+() ----> 函数的调用者
#函数的调用 和 执行
def new_len(): #内存只加载函数到内存,如果没有被调用,就不会执行函数的内容
print('abc') ************************************************************ new_len() # 函数名 +() 是执行一个函数
print(new_len) #<function new_len at 0x000002025FC02EA0>内存地址
print(id(new_len)) # 2565029441184 内存地址
print(type(new_len))#<class 'function'>

四丶函数的返回值(return)

函数的返回值作用:

​ 1.结束函数

​ 2.给函数的调用者返回值

函数的返回值return的3中类型:
#1.函数值没有return ,或者函数只写一个return     函数的执行者得到--> none
#2.函数中return后是单个值, 函数的执行者得到的是这个值, 不改变这个值的类型
#3.函数中return 返回多个值 , 函数的执行者得到多个值的数据类型是元组
#结束函数  -->none,只执行return之前的函数体,return之后的函数体不执行
def func():
print('123')
a=1
return
print('abc')
print(func()) #none 和 123 #函数return 单个值 ,得到单个值,单个值的数据类型不改变
def func():
a=1
return 1
print(func()) #函数return 多个值, 得到一个元组
def func():
return 1,'abc',[1,2,3]
print(func()) #(1, 'abc', [1, 2, 3]) 元组
##可以结构去接return返回值,结构字典,元组,列表都可以,变量和值要一一匹配
a,b,c=func()
print(a,b,c) # #函数 return返回执行的结果
def func():
return 1>2
print(func()) #False

五丶函数的传参

目的:使函数变得具有可扩展性

​ 参数: 函数在调用的时给函数传递的信息

​ 传参:把实参付给形参的过程

参数的种类:形参和实参

​ 形参: 在函数声明的位置的变量

​ 实参 :在函数调用的时候给出的具体的值

#实参角度:
# 1.位置参数 ,从左到右 ,按照顺序位置一 一对应
def func(sex,age):
print(f'性别{sex},年龄{age}')
func('男','20') # 2.关键字参数 ,必须 一 一二对应,参数的顺序随意
def func(sex,age,job,height,weight):
print(f'{sex},{age},{job},{height},{weight}')
func(sex='男',age=20,job='学生',height='179cm',weight=60) # 3.混合参数(位置参数+关键字参数) 一一对应(说的是参数的个数) def func(name,sex,age,job,height,weight):
print(f'{name},{sex},{age},{job},{height},{weight}') #*** 遵循:位置参数,在关键字参数之前 ***
func('李四','男','20',job='代练',weight=120,height='170cm') #形参角度:
# 1.位置参数 ,从左到右 ,按照顺序位置一 一对应
def func(sex,age): # 位置 一 一对应
print(f'性别{sex},年龄{age}')
func('男','20') # 2.默认参数 sex设置就是默认参数,常用的值就是默认参数
#默认参数一定要在位置参数后面,不传参数,就使用默认参数
def meet(age,job,sex='女'):
print(f'{age} , {job}, {sex}')
meet(22, '教师') # 使用默认参数 #更改默认参数
meet(20,'教师',sex='男') # 关键字 指定修改
meet(22,'教师','男') # 位置 指定修改 # 3.动态位置参数 *args
# 4.仅限关键字参数 key='小白'
# 5.动态关键字传参 **kwargs

Python进阶(一)----函数的更多相关文章

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

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

  2. Python进阶(二)----函数参数,作用域

    Python进阶(二)----函数参数,作用域 一丶形参角度:*args,动态位置传参,**kwargs,动态关键字传参 *args: ​ 动态位置参数. 在函数定义时, * 将实参角度的位置参数聚合 ...

  3. Python进阶07 函数对象

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 秉承着一切皆对象的理念,我们再次回头来看函数(function).函数也是一个对象 ...

  4. Python进阶04 函数的参数对应

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们已经接触过函数(function)的参数(arguments)传递.当时我们根 ...

  5. python进阶之函数和类内建魔法属性

    前言 关于对象的魔法方法我们已经讲得太多,但是对于类或函数内建的魔法属性和功能我们涉及较少,下面系统了解一下类和函数的内建属性. 查看内建属性 class Person(object): pass d ...

  6. Python 进阶 之 函数对象

    Python的世界里,万物皆对象,函数当然也是: 首先要定义一个函数: def add(a,b): print a+b 其次定义一个字典来引用该函数: dic = {"add":a ...

  7. Python进阶-Ⅷ 匿名函数 lambda

    1.匿名函数的引入 为了解决那些功能很简单的需求而设计的一句话函数 def func(i): return 2*i # 简化之后 func = lambda i:2*i #todo 其中:func是函 ...

  8. Python进阶04函数的参数对应

    我们已经接触过函数(function)的参数(arguments)传递.当时我们根据位置,传递对应的参数.我们将接触更多的 参数传递方式. 回忆一下位置传递: def f(a,b,c): return ...

  9. python 进阶篇 函数装饰器和类装饰器

    函数装饰器 简单装饰器 def my_decorator(func): def wrapper(): print('wrapper of decorator') func() return wrapp ...

随机推荐

  1. Linux上DNS解析总是选择resolv.conf中第二位的DNS服务器IP地址

    问题现象: 在Linux机器上,用户自建了一台DNS服务器.然后改动/etc/resolv.conf将其服务器IP地址添加到第一项.将阿里云的内网DNS放到第二位,然而在测试过程中发现telnet,p ...

  2. 【mybatis源码学习】缓存机制

    一.mybatis的缓存 一级缓存:sqlsession级别,默认开启(一个事务内有效)二级缓存:  sqlsessionFactory级别,需要手动开启,在xml配置cache节点(依赖事务的执行结 ...

  3. xshell如何导入.xsh 文件

    xshell 不能导入 xsh 文件 导入功能 只能导入 *.xts, *.csv, *.tsv 文件,不能直接导入 .xsh 其实 xsh文件不需要导入,直接拷贝进去就可以了(.xsh 本来就是 x ...

  4. java base64编码解码

    第一种.DatatypeConverter 使用JDK自带DatatypeConverter.java类实现,JDK版本必须>=1.6 /** * @Description base64编码 * ...

  5. 【转】Sql Server查看所有数据库名,表名,字段名(SQL语句)

    -- 获取所有数据库名 select * from master..SysDatabases; -- 获取hotline数据库中所有表名 select name from hotline..SysOb ...

  6. 类加载器ClassLoader源码解析

    1.ClassLoader作用 类加载流程的"加载"阶段是由类加载器完成的. 2.类加载器结构 结构:BootstrapClassLoader(祖父)-->ExtClassL ...

  7. C++内存管理5-处理new分配内存失败情况(转)

    C++内存管理5-处理new分配内存失败情况(转) endl; 参考博客: https://www.cnblogs.com/findumars/p/9905195.html

  8. LwIP应用开发笔记之六:LwIP无操作系统TCP客户端

    上一篇我们基于LwIP协议栈的RAW API实现了一个TCP服务器的简单应用,接下来一节我们来实现一个TCP客户端的简单应用. 1.TCP简述 TCP(Transmission Control Pro ...

  9. 【javascript】日期转字符串

    function dateFormat(fmt, date) { var ret; var tf = function(str, len){ if(str.length < len) { for ...

  10. 域名解析中的cname解析和显性URL跳转和隐性URL跳转三者有什么区别

    通俗的来讲,cname解析还是属于dns解析,只是把某个域名解析到另外一个域名对应的某个IP的空间中,所以还需要在服务器端(比如nginx)做域名解析(比如把baidu.com做一个cname解析到i ...