定义函数

  我们现学已知的python函数有<内置函数>

  而我们现在要学的是<自定义函数>

1,def  定义一个函数

def name(): # 后接函数名 冒号
pass

2,调用函数

def name():
print("代码...")
name() # 函数名加括号 ###一定要加括号,不加括号调用的是函数名的内存地址

3,return 返回值

  1,不写return的情况下,会默认返回一个None

def name():
print("代码...") # 打印
print(name())
运行结果: # 打印调用函数
代码...
None

  2,函数后面只写return,一样返回None,return下面的代码不执行

def ret_demo():
print(111)
return # 遇到return 结束整个函数
print(222)
ret_demo()
运行结果:
111

  3,return 后接一个值 (返回值的数据类型参数原本的数据类型)

def demo():
a = 1
b = 2
c = a + b
return c
print(demo())
运行结果:
3

  4,return 后接多个值,可以是任意数据类型(返回的多个值会被组织成元组被返回,也可以用多个值来接收)

def my_len():
a = "jadshhsah"
content = 0
for i in a:
content+=1
return content ,"哈哈哈",123
print(my_len())
运行结果:
(9, '哈哈哈', 123) def ret_demo2():
return 1,["a","b"],3,4
a,b,c,d = ret_demo2() # 多个值接收
print(a,b,c,d)
运行结果:
1 ['a', 'b'] 3 4

4,函数传参  

  传参分为形参和实参

def  mymax(x,y): # x,y为形参
if x > y: # 比较大小,输出比较大的
return x
else:
return y
print(mymax(110, 119)) # 110,119为两个实参

    1,位置参数

      形参实参位置要一一对应,就如上面的x,y和110,119

    2,关键字参数

      可以不用对应

def mymax(x,y):
print(x,y)
max = x if x > y else y
return max
ma = mymax(y = 20, x = 10)
print(ma)

    3,混合参数

      位置参数一定要在关键字参数前面

def mymax(x,y):
print(x,y)
max = x if x > y else y
return max
ma = mymax(10, y = 20)
print(ma)

    4,默认参数

      将不常变化的值设置成默认值,

      传参时,不输入则显示默认,输入则替换默认值

def stu_info(name,sex = "male"):
'''打印学生信息,由于班里大多都是男生
所以设置参数"sex"默认值为”male“'''
print(name,sex) stu_info("alex")
stu_info("xiaomei","female")

      默认参数之面试坑:

      如果默认参数是个可变的数据类型

def defult_param(a,l = []):
l.append(a)
print(l)
defult_param("alex")
defult_param("egon") 运行结果: ['alex']
['alex', 'egon']

    5,动态参数

      动态参数,也叫不定长传参,就是你需要传给函数的参数很多,不定个数,那这种情况下,你就用*args,**kwargs接收,args是元祖形式,

        接收除去键值对以外的所有参数,kwargs接收的只是键值对的参数,并保存在字典中。

def trans_para(*args,**kwargs):
print(args,type(args))
print(kwargs,type(kwargs))
trans_para("jinxin",12,[1,2,3,4],[3,4,],(1,4,7),{"a":"","c":456},country="china")

      

      * 的魔性用法
      在函数的定义时,在 *位置参数,**位置参数聚合。
      在函数的调用(执行)时,在 *位置参数,**位置参数打散
# l1 = [1,2,3]
# l2 = [111,22,33,'alex'] # def func1(*args):
# print(args)
# return args[0] + args[1]
# print(func1(l1,l2)) # def func1(*args,**kwargs):
# # print(args)
# print(kwargs)
# func1(*l1,*l2)
# func1(*(1,2,3),*('alex','sb'))
# func1(*'alex',*'sb')
# func1(1,2,3,'alex','sb')
#
# func1(**{'name':'alex'},**{'age':1000}) # func1(name='alex',age=1000})

5,三元运算

   常用于简单的if 语句判断

  max = x if x > y else y

li = [1,2,3,5,4,6,7,8]
l1 = [i for i in li if i >5] # 找出大于5的数
运行结果:
[6, 7, 8] def max_num(a,b):
""" 输入两个数比大小"""
max = a if a > b else b
return max
print(max(4,8))

    

python成长之路六-函数的初识的更多相关文章

  1. python成长之路七-函数的进阶

    1,python中,名称空间分三种: 全局命名空间 局部命名空间(临时命名空间) 内置名称空间 2,作用域(两种): 1,全局作用域  包含:全局名称空间   内置名称空间 2,局部作用域  包含:局 ...

  2. (转)Python成长之路【第九篇】:Python基础之面向对象

    一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程-->错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个 ...

  3. 【Python成长之路】Python爬虫 --requests库爬取网站乱码(\xe4\xb8\xb0\xe5\xa)的解决方法【华为云分享】

    [写在前面] 在用requests库对自己的CSDN个人博客(https://blog.csdn.net/yuzipeng)进行爬取时,发现乱码报错(\xe4\xb8\xb0\xe5\xaf\x8c\ ...

  4. 【Python成长之路】装逼的一行代码:快速共享文件

    [Python成长之路]装逼的一行代码:快速共享文件 2019-10-26 15:30:05 华为云 阅读数 335 文章标签: Python编程编程语言程序员Python开发 更多 分类专栏: 技术 ...

  5. python成长之路第三篇(1)_初识函数

    目录: 函数 为什么要使用函数 什么是函数 函数的返回值 文档化函数 函数传参数 文件操作(二) 1.文件操作的步骤 2.文件的内置方法 函数: 一.为什么要使用函数 在日常写代码中,我们会发现有很多 ...

  6. 我的Python成长之路---第一天---Python基础(1)---2015年12月26日(雾霾)

    2015年12月26日是个特别的日子,我的Python成之路迈出第一步.见到了心目中的Python大神(Alex),也认识到了新的志向相投的伙伴,非常开心. 尽管之前看过一些Python的视频.书,算 ...

  7. python成长之路【第十八篇】:python模块介绍、模块导入和重载

    一.模块和命名空间 一般来说,Python程序往往由多个模块文件构成,通过import语句连接在一起.每个模块文件是一个独立完备的变量包,即一个命名空间.一个模块文件不能看到其他文件定义的变量名,除非 ...

  8. Python 成长之路

    Python roadmap python 基础 ... 内置常用函数.三元运算.递归 迭代器和生成器 模块和常用的模块 面向对象 对向对象进阶 网络编程 并发编程 ... 数据库 MySQL pym ...

  9. python成长之路第三篇(3)_内置函数及生成器迭代器

    打个广告欢迎加入linux,python资源分享群群号:478616847 目录: 1.lambda表达式 2.map内置函数 3.filter内置函数 4.reduce内置函数 5.yield生成器 ...

随机推荐

  1. 18-(基础入门篇)GPRS(Air202)拨打电话--(由于板子做修订,所以暂停更新)

    https://www.cnblogs.com/yangfengwu/p/9968883.html 这个直接用官方给的demo就可以 先睹为快 现在说个需求哈,是当初一个人给提出的需求 例如存入的号码 ...

  2. android之WIFI小车编程详述

    有了前几篇wifi模块eps8266的使用,单片机设置eps8266程序,android TCP客户端,现在就做一个wifi小车 先上图 小车是四个轮子的,每个轮子上都有电机驱动,前进后退的时候四个轮 ...

  3. 51Nod 1668 非010串

    这是昨天上课ChesterKing dalao讲线代时的例题 当时看到这道题就觉得很水,记录一下后面两位的情况然后讨论一下转移即可 由于之前刚好在做矩阵题,所以常规的矩阵快速幂优化也很简单 好我们开始 ...

  4. ASP.NET Core 2.1 源码学习之 Options[2]:IOptions

    在 上一章 中,介绍了Options的注册,而在使用时只需要注入 IOption<T> 即可: public ValuesController(IOptions<MyOptions& ...

  5. Codeforces 999D Equalize the Remainders (set使用)

    题目连接:Equalize the Remainders 题意:n个数字,对m取余有m种情况,使得每种情况的个数都为n/m个(保证n%m=0),最少需要操作多少次? 每次操作可以把某个数字+1.输出最 ...

  6. restfull环境搭建-helloword(三)

    原文地址:http://only81.iteye.com/blog/1689537 This section creates a CRUD (Create, Read, Update, Delete) ...

  7. websocket(二)——基于node js 的同步聊天应用

      https://github.com/sitegui/nodejs-websocket 1.用node搭建本地服务 npm install nodejs-websocket var ws = re ...

  8. 几何学观止(Riemann流形部分)

    上承这个页面,相较之前,增加了古典的曲线曲面论,这部分介绍得很扼要,Riemann流形介绍得也很快,花了仅仅30页就介绍到了Gauss-Bonnet公式.同时配上了提示完整的习题. 几何学观止-Rie ...

  9. mooc linux学习总结

    通过八周的学习获得了很多知识.       首先,通过网课老师形象生动的讲述和描述一些专业词汇,使我更加深刻的记住并掌握了这些内容:动态的展示堆栈的变化,更容易理解一段汇编代码:分析操作系统的工作,记 ...

  10. 猜字游戏java

    一.实践目的 1.掌握基本输入输出. 2.掌握方法定义与调用,理解参数传递方式. 3.掌握数组的声明.定义与初始化,数组的处理. 4.掌握数组作为方法参数和返回值. 二.实践要求 利用方法.数组.基本 ...