ParisGabriel

 
感谢 大家的支持  
 
  
                                                         

                 每天坚持 一天一篇 点个订阅吧  灰常感谢    当个死粉也阔以

                      Python人工智能从入门到精通

“\n”Linux 换行符
"\r\n" Windows换行符

函数的参数传递:
   传参方式:(2种)
    位置传参(包含关系 )
      序列传参
    关键字传参(包含关系)
      字典关键字传参
位置传参:
    实际参数(实参)的对应关系与形式参数(形参) 的对应关系是安位置来依次对应的
    说明:
      实参和形参通过位置进行传递和匹配
      实参的个数必须与形参的个数相同
序列传参:
    序列传参是指在函数调用过程中,用 * 将序列拆解 后按照位置进行传递的方式
    说明:
      序列传参时,序列拆解的位置与形参一一对应
      序列的位置信息对应相应的形参的位置
关键字传参:
    关键字传参是指传参时,按着形参的名称给形参赋值、实参和形参按形参名进行匹配
字典关键字传参:
    是指字典,将字典用“**”拆解后再进行关键字传参的方式
    说明:
      字典的键名必须和形参名一致
      字典的键名必须是字符串且标识符
      字典额键名要在形参中存在
综合传参:
    函数的传参方式在能确定形参能唯一匹配到相应实参的情况下可以任意组合
  说明:
    位置传参(序列传参)一定要在关键字传参(字典关键字传参)的左侧

  示例:

def fu(a, b, c):
    print("a=", a)
    print("b=", b)
    print("c=", c)
fu(100, *[200, 300])
fu(*[100, 200], 300)
fu(100, 200, 300)
fu(100, b=200, c=300)
fu(100, **{"c": 200, "b": 300})

--------------------函数的形参定义--------------------
函数的缺省参数:
  语法:
    def 函数名 (形参名1=默认实参1, 形参2=默认实参2)
      语句块
  说明:
    缺省参数必须从右至左依次存在的,如果一个参数有缺省参数,
    则右侧的所有参数都必须有缺省参数
函数的形参定义:
    1.位置形参
      2.星号元组形参
    3.命名关键字形参
      4.双星号字典形参
位置形参:
  语法:
    def 函数名(形参1, 形参2.......)
      语句块
元组形参:
  语法:
    def 函数名(*元组形参名):
      语句块
  作用:
    收集多余的位置传参
命名关键字形参:
  语法:
    def 函数名(*, 命名关键字形参):
      语句块
    或
    def 函数名(*args, 命名关键字形参):
      语句块
    (关键字形参 必须用关键字传参)
  作用:
    强制所有的参数都参数都必须用关键字传参或字典关键字传参
双星号字典传参:
  语法:
    def 函数名(**字典形参名):
      语句块
  作用:
    收集多余关键字传参
    字典形参名通常命名为:kwargs
函数的参数说明:
  位置形参、星号元组形参、命名关键字形参、双星号字典形参可以混合使用
函数自左到右的顺序为:
    1.位置形参
    2.星号元组形参
    3.命名关键字形参
    4.双星号字典形参
  例如:
    def fx(a, b, *args, c, **kwargs):
      pass
    fx(100, 200, 300, 400, c="c", d="d")
函数的不定长参数:
  星号元组形参,双星号字典形参
  说明:
    可以接收任意位置传参和关键字传参
  例如:
    def fn(*args, **kwargs)
      pass

全局变量和局部变量:
  局部变量:local variable
    1.定义函数内的变量成为局部变量(函数的形参也是局部变量)
    2.局部变量只能在函数内部使用
    3.局部变量在函数调用时才能够被创建,在函数调用之后被销毁
  全局变量:global variable
    定义在函数外,模块内的变量称为全局变量
    全局变量所有函数都可以直接访问(但函数内不能将其直接赋值)

练习:
1.写一个函数minmax(a, b, c) 有三个参数,这回这三个参数中的最小值和最大值,
要求,形成元组,最小值在前,最大值在后,如:

def minmax(a, b, c):
...

t = minmax(11, 33, 22)
print(t) # (11, 33) # <<< 打印元组
xiao, da = minmax(6, 5, 4)
print('最小值:', xiao, '最大值:', da)

答案:

def minmax(a, b, c):
    x = a
    if x > b:
        x = b
    if x > c:
        x = c
    z = a
    if z < b:
        z = b
    if z < c:
        z = c
    L = [x, z]
    print(L)
minmax(2, 1, 3)

方法二:
def minmax(a, b, c):
    L = [min(a, b, c), max(a, b, c)]
    print(L)
minmax(2, 3, 1)

其实方法二 这样也是可以的不过就是有点不厚道了  这不属于二道贩子嘛

2.写一个函数 myadd, 此函数可以计算两个数的和,也可以计算三个数的和

def myadd(......):
....
print(myadd(10, 20)) # 30
print(myadd(100, 200, 300)) # 600

答案:

def myadd(a, b, c=0):
    return a + b + c
print(myadd(100, 200, 300))
print(myadd(100, 200))
def mysum(*args):
    return sum(args)

皮一下很开心  mysum = sum

3 . 写一个函数,print_odd, 此函数可以传递一个实参,也可以传递两个实参,当传递一个实参时代表结束值
当传递两个实参时,第一个实参代表起始值,第二个实参代表结束值
打印出以此区间内的全部奇数,不包含结束数:

print_odd(10) # 1 3 5 7 9
print_odd(11, 20) # 11 13 15 17 19

答案:

def print_odd(a, b=None):
    if b == None:
        b = a
        a = 0
    for x in range(a, b):
        if x % 2 != 0:
            print(x, end=" ")
print_odd(10)# 1 3 5 7 9
print_odd(11, 20)# 11 13 15 17 19

4. 写一个函数, mysum可以传入任意个实参的数字,返回所有实参的和

def mysum(*args):
...
print(mysum(1, 2, 3, 4)) # 10
print(mysum(10, 20, 30)) # 60

答案:

def mysum(*args):
    i = 0
    for x in args:
        i += x
    return i

6. 创建一个全局变量 L = []
写一个函数:
def input_number():
....
此函数每次调用将从键盘读入一些数字追加到列表L中

如:
L = []
def input_number():
....
input_number()
print(L) # [ .... 这些是您从键盘输入的数..]

L = []
def input_number():
    while True:
        a = int(input("please input (-1 over):"))
        if a < 0:
            break
        L.append(a)
    return L
L = input_number()
print(L) # [ .... 这些是您从键盘输入的数..]

7. 写一个函数isprime(x) 判断x是否为素数。如果是素数,返回True,否则返回False

答案:

def isprime(x):
    if x > 2:
        for i in range(2, x):
            if x % i == 0:
                s = False
                break
        else:
            s = True
    else:
        if 1 < x < 3:
            s = True
        else:
            s = False
    return s
x = isprime(4)
print(x)

8. 写一个函数prime_m2n(m, n) 返回从m开始,到n结束(不包含n)范围内的素数,返回这些素数的列表并打印
如:
L = prime_m2n(5, 10)
print(L) [5, 7]

答案:

def prime_m2n(m, n):
    L = []
    for x in range(m, n):
        if isprime(x) == True:
            L.append(x)
    return L
L = prime_m2n(5, 10)
print(L)

9. 写一个函数pimes(n) 返回小于n的全部素数的列表,并打印这些素数
如:
L = primes(10)
print(L) # [2, 3, 5, 7]
1) 打印100 以内的全部素数
2) 打印200 以内的全部素数的和

答案:

def pinmes(n):
    return prime_m2n(1, n)
L = pinmes(10)
print(L) # [2, 3, 5, 7]
print(pinmes(100))
print(sum(pinmes(200)))

10. 编写函数 fn(n) 此函数返回下列级数的和:
fn(n) = 1/(1*2) + 1/(2*3) + ....
+ 1/(n*(n-1)) 的和

print(fn(100))

答案:

def fn(n):
    s = 0
    for i in range(1, n):
        s += 1 / (i * (i + 1))
    return s
print(fn(100))

一波经验加成buff: (咳咳 C波牛B)
  开局 一人 一电脑 ,一键盘999999999999999级
你肯会迷茫 晕眩 摸不着头尾 没关系 给你加个经验值BUFF
  因为很多专业术语比较抽象 再加上翻译差别 所以说很多人都是知道专业术语该怎么说
叫什么 一般容易记住和记忆最久的应该就是用自己的方式去跟现实或者一些列子对比
越白话文越好记 什么花里胡哨的术语 知道是什么就行了 (能记还是要记得 说也尽量说
只是在你脑子里是一个对应的实例关系 就好比 变量 在内存中.......跑题了 溜了 溜了)

实参、传参、形参是什么 ?
    实参就是调用函数时的参数
    传参就是把形参传给实参的过程
    形参就是定义(封装)函数时的参数
字典关键字传参就是把字典先用(**)拆开分成形参和实参
        键代表关键字(形参、不可变)
        值代表参数(实参、可变)
    一个键对应一个值 一个关键字对应一个参数
列表、元组 都是属于顺序传参 先用(*)拆分后传参
    关键字传参必须有关键字(形参)和参数(实参)
传参的排序规则:
  从左到右 1.位置形参 2.星号元组形参 3.命名关键字形参 4.双星号字典形参
    变量没什么可说的 就相当于一个公共电话(全局)和私人手机(局部)
所有人都可以用公共电话 你的私人手机你会让所有人用吗?我想不会吧

Python全栈工程师(函数的传参)的更多相关文章

  1. Python全栈工程师(装饰器、模块)

    ParisGabriel                每天坚持手写  一天一篇  决定坚持几年 全栈工程师     Python人工智能从入门到精通 装饰器 decorators(专业提高篇) 装饰 ...

  2. Python全栈工程师(递归函数、闭包)

    ParisGabriel            每天坚持手写  一天一篇  决定坚持几年 全栈工程师     Python人工智能从入门到精通 函数式编程: 是指用一系列函数解决问题 每一个函数完成细 ...

  3. Python全栈工程师(Python3 所有基础内容 0-0)

    ParisGabriel              每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰    开局一张图     Python一个月的基础语法 基本就到这咯    接下来是数据 ...

  4. Python全栈工程师(每周总结:2)

     ParisGabriel   感谢 大家的支持                                                               每天坚持 一天一篇 点个订 ...

  5. Python全栈工程师(每周总结:1)

    ParisGabriel   python今年9月份将被国家纳入计算机二级资格证 先学就是鼻祖 几年后你就是大牛      Python人工智能从入门到精通         week summer: ...

  6. Python全栈工程师(字符串/序列)

    ParisGabriel     Python 入门基础       字符串:str用来记录文本信息字符串的表示方式:在非注释中凡是用引号括起来的部分都是字符串‘’ 单引号“” 双引号''' ''' ...

  7. Python全栈工程师(异常(高级)、运算符重载)

    ParisGabriel              每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰    开局一张图 Python人工智能从入门到精通 对象的属性管理函数: getattr ...

  8. Python全栈工程师(面向对象)

    ParisGabriel                每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰    开局一张图 Python人工智能从入门到精通 day16补充: 异常处理 文件 ...

  9. Python全栈工程师(元组、字典)

     ParisGabriel     感谢 大家的支持  你们的阅读评价就是我最好的更新动力  我会坚持吧排版做的越来越好        每天坚持 一天一篇 点个订阅吧  灰常感谢    当个死粉也阔以 ...

随机推荐

  1. 跳转时候提示Attempt to present on while a presentation is in progress

    出现这种情况,例如:我在获取相册图片后,直接present到另一个页面,但是上一个页面可能还未dismiss,所以,要在获取相册图片的dismiss方法的complete的block里面写获取图片及跳 ...

  2. Centos7下Etcd集群搭建

    一.简介 "A highly-available key value store for shared configuration and service discovery." ...

  3. Sublime text 快捷键总结

    下述快捷键都是我写C++代码时发现的,是否适用其他格式(扩展名)的文件尚为未知. Basic Editing Ctrl + A 全选 Ctrl + S 保存 Ctrl + C 复制 Ctrl + V ...

  4. Mac OS系统 - 将视频转换成gif

    github中开源轻量级应用:droptogif

  5. mysql 中间件 分析

    360的Atlas 1.读写分离 2.从库负载均衡 3.IP过滤 4.自动分表 5.DBA可平滑上下线DB 6.自动摘除宕机的DB altas 在10000/s的请求量级应该是毫无问题的 https: ...

  6. [LeetCode]题解(python):133-Clone Graph

    题目来源: https://leetcode.com/problems/clone-graph/ 题意分析: 克隆一个无向图.每个节点包括一个数值和它的邻居. 题目思路: 直接深度拷贝. 代码(pyt ...

  7. HDU1300DP

    /* HDU1300 DP 特定n饰品种类 每个饰品的两个数据.amount[i]代表数量.price[i]代表单位价格 购买珠宝时要满足下面购买规则: 单独买:每种珠宝要加上数量10 合并买:能够把 ...

  8. PHP源码阅读strtr

    strtr 转换字符串中特定的字符,但是这个函数使用的方式多种. echo strtr('hello world', 'hw', 'ab'); // 第一种 aello borld echo strt ...

  9. SQL入门(4): 嵌入式SQL语言

    本节讲述内容: 1.嵌入式SQL 语言概述 2.变量声明与数据库连接 3.数据集与游标 4.可滚动游标与数据库的增删改 5.状态捕捉以及错误处理机制 (一)嵌入式SQL语言 之前我们所学的都是交互式S ...

  10. [转]MySQL源码:Range和Ref优化的成本评估

    MySQL源码:Range和Ref优化的成本评估 原文链接:http://www.orczhou.com/index.php/2012/12/mysql-source-code-optimizer-r ...