文档章节

x006-函数和模块的使用

伟大源于勇敢的开始
 伟大源于勇敢的开始
发布于 2019/12/13 21:22
字数 538
阅读 11
收藏 0

函数和模块的使用

在Python中可以使用def关键字来定义函数,和变量一样每个函数也有一个响亮的名字,而且命名规则跟变量的命名规则是一致的。在函数名后面的圆括号中可以放置传递给函数的参数,函数执行完成后我们可以通过return关键字来返回一个值 变量引用和调用函数的引用

#-*- coding:utf-8 -*-
from random import randint


def roll_dice(n=2):
    total = 0
    for _ in range(n):
        total += randint(1, 6)
    return total

def add(a=0, b=0, c=0):
    return a + b + c


print(roll_dice())
print(roll_dice(3))
print(add())
print(add(1))
print(add(1, 2))
print(add(1, 2, 3))
# 传递参数时可以不按照设定的顺序进行传递
print(add(c=50, a=100, b=200))

调用函数以及引用

def foo():
    print('hello, world!')


def foo():
    print('goodbye, world!')


foo()

提示:上述foo()会引用哪个呢?,当多个开发进行定义的时候 可以在同个文件夹下写两个不同的.py文件(a.py 和b.py)

[root@aliyun-hk-yabo-test-ownself python]# python 2.py 
goodbye, world!
hello, world!
hello, world!
goodbye, world!
[root@aliyun-hk-yabo-test-ownself python]# cat 2.py 
from b import foo
from a import foo
import a as m1
import b as m2
m1.foo()
m2.foo()
[root@aliyun-hk-yabo-test-ownself python]# cat a.py
def foo():
    print('hello, world!')
foo()
[root@aliyun-hk-yabo-test-ownself python]# cat b.py
def foo():
    print('goodbye, world!')
foo()

提示:如果我们导入的模块除了定义函数之外还中有可以执行代码,这个坑最好把要执行的代码放到执行的模块里 if name == 'main': print('call foo()') foo() print('call bar()') bar()

__name__是Python中一个隐含的变量它代表了模块的名字

只有被Python解释器直接执行的模块的名字才是__main__

规范

def main():
    # Todo: Add your code here
    pass


if __name__ == '__main__':
    main()

© 著作权归作者所有

上一篇: 001-Consul
伟大源于勇敢的开始
粉丝 10
博文 261
码字总数 140390
作品 0
深圳
运维
私信 提问
深入理解ES6--13.用模块封装代码

主要知识点:什么是模块、模块中的导出、模块中的导入 1. 什么是模块? 模块(Modules ) 是使用不同方式加载的 JS 文件(与 JS 原先的脚本加载方式相对) 。这种不同模式很有必要,因为它与...

你听___
2018/05/08
0
0
C语言常用代码组织形式

一、常用的代码组织形式 将所需要使用的函数分类,总体思想是如果两个函数操作的是一个资源,完成的是类似的功能,则将这两个函数划分在一个模块中,比如对一个链表的的插入和删除操作而言应...

大道无名
2016/10/23
54
0
记忆模糊的知识点5-16

函数 装饰器 def log(func): def wrapper(args, *kw): print 'call %s():' % func.name return func(args, *kw) return wrapper 观察上面的,因为它是一个decorator,所以接受一个函数作为参......

mrzengqq
2017/05/16
0
0
Linux内核模块编程与内核模块LICENSE -《详解(第3版)》预读

Linux内核模块简介 Linux内核的整体结构已经非常庞大,而其包含的组件也非常多。我们怎样把需要的部分都包含在内核中呢? 一种方法是把所有需要的功能都编译到Linux内核。这会导致两个问题,...

21cnbao
2014/07/02
0
0
JavaScript 模块的发展史

我们都知道 JavaScript 中并没有模块的概念,一开始 JavaScript 的出现只是作为简单脚本语言来实现简单的页面逻辑,而随着互联网的发展和 web 2.0 时代的到来,前端代码呈现井喷式发展,随着...

淘淘笙悦
2018/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql中int(11)的列大小是多少?

mysql中int(11)的列大小是多少? 以及可以在此列中存储的最大值? #1楼 mysql中int(11)的列大小是多少? (11) int数据类型的此属性与列的大小无关。 它只是整数数据类型的显示宽度。 从11....

技术盛宴
31分钟前
37
0
聊聊artemis消息的推拉模式

序 本文主要研究一下artemis消息的推拉模式 拉模式 receive activemq-artemis-2.11.0/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessageConsumer.......

go4it
40分钟前
39
0
vue 全局前置守卫引起死循环的原因与解决方法

我们经常会用到全局前置守卫,如判断用户有没有登陆过,如果登陆过就直接跳到目的页面,如果没有登陆过,就跳转到登陆页。 先看官网对全局前置守卫的介绍 使用 router.beforeEach 注册一个全...

tianyawhl
52分钟前
31
0
如何按索引从std :: vector <>擦除元素?

我有一个std :: vector <int>,我想删除第n个元素。 我怎么做? std::vector<int> vec;vec.push_back(6);vec.push_back(-17);vec.push_back(12);vec.erase(???); #1楼 erase方法将以两......

javail
今天
43
0
使用生成器模拟时间分片

对于cpu密集型任务, 时间分片可以有效减少页面卡顿, 不过对于纯计算型任务还是推荐使用worker在后台做计算 效果图, 计算密集型任务被分到每次只执行16ms, 每次执行完毕留给浏览器时间去响应事...

阿豪boy
今天
63
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部